## What was done: ✅ Fixed Firebase Admin initialization to use default credentials for Firebase Functions ✅ Updated frontend to use correct Firebase Functions URL (was using Cloud Run URL) ✅ Added comprehensive debugging to authentication middleware ✅ Added debugging to file upload middleware and CORS handling ✅ Added debug buttons to frontend for troubleshooting authentication ✅ Enhanced error handling and logging throughout the stack ## Current issues: ❌ Document upload still returns 400 Bad Request despite authentication working ❌ GET requests work fine (200 OK) but POST upload requests fail ❌ Frontend authentication is working correctly (valid JWT tokens) ❌ Backend authentication middleware is working (rejects invalid tokens) ❌ CORS is configured correctly and allowing requests ## Root cause analysis: - Authentication is NOT the issue (tokens are valid, GET requests work) - The problem appears to be in the file upload handling or multer configuration - Request reaches the server but fails during upload processing - Need to identify exactly where in the upload pipeline the failure occurs ## TODO next steps: 1. 🔍 Check Firebase Functions logs after next upload attempt to see debugging output 2. 🔍 Verify if request reaches upload middleware (look for '�� Upload middleware called' logs) 3. 🔍 Check if file validation is triggered (look for '🔍 File filter called' logs) 4. 🔍 Identify specific error in upload pipeline (multer, file processing, etc.) 5. 🔍 Test with smaller file or different file type to isolate issue 6. 🔍 Check if issue is with Firebase Functions file size limits or timeout 7. 🔍 Verify multer configuration and file handling in Firebase Functions environment ## Technical details: - Frontend: https://cim-summarizer.web.app - Backend: https://us-central1-cim-summarizer.cloudfunctions.net/api - Authentication: Firebase Auth with JWT tokens (working correctly) - File upload: Multer with memory storage for immediate GCS upload - Debug buttons available in production frontend for troubleshooting
84 lines
1.6 KiB
JSON
84 lines
1.6 KiB
JSON
{
|
|
"hosting": {
|
|
"public": "dist",
|
|
"ignore": [
|
|
"firebase.json",
|
|
"**/.*",
|
|
"**/node_modules/**",
|
|
"src/**",
|
|
"*.test.ts",
|
|
"*.test.js",
|
|
"jest.config.js",
|
|
"tsconfig.json",
|
|
".eslintrc.js",
|
|
"vite.config.ts",
|
|
"tailwind.config.js",
|
|
"postcss.config.js"
|
|
],
|
|
"headers": [
|
|
{
|
|
"source": "**/*.js",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "public, max-age=31536000, immutable"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "**/*.css",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "public, max-age=31536000, immutable"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "**/*.html",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "no-cache, no-store, must-revalidate"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "/",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "no-cache, no-store, must-revalidate"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "**/*.@(jpg|jpeg|gif|png|svg|webp|ico)",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "public, max-age=31536000, immutable"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"rewrites": [
|
|
{
|
|
"source": "**",
|
|
"destination": "/index.html"
|
|
}
|
|
],
|
|
"cleanUrls": true,
|
|
"trailingSlash": false
|
|
},
|
|
"emulators": {
|
|
"hosting": {
|
|
"port": 5000
|
|
},
|
|
"ui": {
|
|
"enabled": true,
|
|
"port": 4000
|
|
}
|
|
}
|
|
}
|