VIBN Frontend for Coolify deployment
This commit is contained in:
77
lib/firebase/admin.ts
Normal file
77
lib/firebase/admin.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import * as admin from 'firebase-admin';
|
||||
|
||||
// Initialize Firebase Admin SDK
|
||||
// During build time on Vercel, env vars might not be available, so we skip initialization
|
||||
const projectId = process.env.FIREBASE_PROJECT_ID;
|
||||
const clientEmail = process.env.FIREBASE_CLIENT_EMAIL;
|
||||
const privateKey = process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n');
|
||||
|
||||
if (!admin.apps.length) {
|
||||
// Only initialize if we have credentials (skip during build)
|
||||
if (projectId && clientEmail && privateKey) {
|
||||
try {
|
||||
console.log('[Firebase Admin] Initializing...');
|
||||
console.log('[Firebase Admin] Project ID:', projectId);
|
||||
console.log('[Firebase Admin] Client Email:', clientEmail);
|
||||
console.log('[Firebase Admin] Private Key length:', privateKey?.length);
|
||||
|
||||
admin.initializeApp({
|
||||
credential: admin.credential.cert({
|
||||
projectId,
|
||||
clientEmail,
|
||||
privateKey,
|
||||
}),
|
||||
storageBucket: `${projectId}.firebasestorage.app`,
|
||||
});
|
||||
|
||||
console.log('[Firebase Admin] Initialized successfully!');
|
||||
} catch (error) {
|
||||
console.error('[Firebase Admin] Initialization failed:', error);
|
||||
}
|
||||
} else {
|
||||
console.log('[Firebase Admin] Skipping initialization - credentials not available (likely build time)');
|
||||
}
|
||||
}
|
||||
|
||||
// Helper to ensure admin is initialized
|
||||
function ensureInitialized() {
|
||||
if (!projectId || !clientEmail || !privateKey) {
|
||||
throw new Error('Firebase Admin credentials not configured');
|
||||
}
|
||||
|
||||
if (!admin.apps.length) {
|
||||
// Try to initialize if not done yet
|
||||
admin.initializeApp({
|
||||
credential: admin.credential.cert({
|
||||
projectId,
|
||||
clientEmail,
|
||||
privateKey,
|
||||
}),
|
||||
storageBucket: `${projectId}.firebasestorage.app`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Export admin services with lazy initialization
|
||||
export function getAdminAuth() {
|
||||
ensureInitialized();
|
||||
return admin.auth();
|
||||
}
|
||||
|
||||
export function getAdminDb() {
|
||||
ensureInitialized();
|
||||
return admin.firestore();
|
||||
}
|
||||
|
||||
export function getAdminStorage() {
|
||||
ensureInitialized();
|
||||
return admin.storage();
|
||||
}
|
||||
|
||||
// Legacy exports for backward compatibility (will work at runtime)
|
||||
export const adminAuth = admin.apps.length > 0 ? admin.auth() : ({} as any);
|
||||
export const adminDb = admin.apps.length > 0 ? admin.firestore() : ({} as any);
|
||||
export const adminStorage = admin.apps.length > 0 ? admin.storage() : ({} as any);
|
||||
|
||||
export default admin;
|
||||
|
||||
Reference in New Issue
Block a user