VIBN Frontend for Coolify deployment
This commit is contained in:
61
app/api/diagnose/route.ts
Normal file
61
app/api/diagnose/route.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { adminAuth, adminDb } from '@/lib/firebase/admin';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const diagnostics: any = {
|
||||
timestamp: new Date().toISOString(),
|
||||
environment: {},
|
||||
firebase: {},
|
||||
token: {},
|
||||
};
|
||||
|
||||
try {
|
||||
// Check environment variables
|
||||
diagnostics.environment = {
|
||||
FIREBASE_PROJECT_ID: process.env.FIREBASE_PROJECT_ID ? 'SET' : 'NOT SET',
|
||||
FIREBASE_CLIENT_EMAIL: process.env.FIREBASE_CLIENT_EMAIL ? 'SET' : 'NOT SET',
|
||||
FIREBASE_PRIVATE_KEY: process.env.FIREBASE_PRIVATE_KEY ? `SET (${process.env.FIREBASE_PRIVATE_KEY.length} chars)` : 'NOT SET',
|
||||
NEXT_PUBLIC_FIREBASE_PROJECT_ID: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID || 'NOT SET',
|
||||
};
|
||||
|
||||
// Test Firebase Admin
|
||||
try {
|
||||
const testDoc = await adminDb.collection('test').doc('diagnostic').get();
|
||||
diagnostics.firebase.adminDb = 'OK - Can access Firestore';
|
||||
diagnostics.firebase.adminAuth = 'OK - Auth service initialized';
|
||||
} catch (error: any) {
|
||||
diagnostics.firebase.error = error.message;
|
||||
}
|
||||
|
||||
// Try to verify a token if provided
|
||||
const authHeader = request.headers.get('authorization');
|
||||
if (authHeader?.startsWith('Bearer ')) {
|
||||
const token = authHeader.substring(7);
|
||||
diagnostics.token.received = true;
|
||||
diagnostics.token.length = token.length;
|
||||
|
||||
try {
|
||||
const decodedToken = await adminAuth.verifyIdToken(token);
|
||||
diagnostics.token.verification = 'SUCCESS';
|
||||
diagnostics.token.uid = decodedToken.uid;
|
||||
diagnostics.token.email = decodedToken.email;
|
||||
} catch (error: any) {
|
||||
diagnostics.token.verification = 'FAILED';
|
||||
diagnostics.token.error = error.message;
|
||||
diagnostics.token.errorCode = error.code;
|
||||
}
|
||||
} else {
|
||||
diagnostics.token.received = false;
|
||||
diagnostics.token.note = 'No token provided - add Authorization: Bearer <token> header to test';
|
||||
}
|
||||
|
||||
return NextResponse.json(diagnostics, { status: 200 });
|
||||
} catch (error: any) {
|
||||
diagnostics.criticalError = {
|
||||
message: error.message,
|
||||
stack: error.stack,
|
||||
};
|
||||
return NextResponse.json(diagnostics, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user