Spaces:
Paused
Paused
File size: 1,235 Bytes
9cd5acc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import 'server-only';
import admin from 'firebase-admin';
interface FirebaseAdminConfig {
projectId: string;
clientEmail: string;
privateKey: string;
}
function formatPrivateKey(key: string) {
return key.replace(/\\n/g, '\n');
}
export function createFirebaseAdminApp(config: FirebaseAdminConfig) {
if (admin.apps.length > 0) {
return admin.app();
}
return admin.initializeApp({
credential: admin.credential.cert({
projectId: config.projectId,
clientEmail: config.clientEmail,
privateKey: formatPrivateKey(config.privateKey),
}),
});
}
export function getAdminAuth() {
// Only initialize if we have credentials, otherwise return null (or throw)
// This prevents build crashes if env vars are missing
if (!process.env.FIREBASE_PROJECT_ID || !process.env.FIREBASE_CLIENT_EMAIL || !process.env.FIREBASE_PRIVATE_KEY) {
console.warn("Firebase Admin credentials missing. Server-side auth will fail.");
return null;
}
const app = createFirebaseAdminApp({
projectId: process.env.FIREBASE_PROJECT_ID,
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
privateKey: process.env.FIREBASE_PRIVATE_KEY,
});
return app.auth();
} |