diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml index 4cb74572..fe63bb67 100644 --- a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/platforms/blabsy-w3ds-auth-api/src/index.ts b/platforms/blabsy-w3ds-auth-api/src/index.ts index b21e7adc..dfa785c9 100644 --- a/platforms/blabsy-w3ds-auth-api/src/index.ts +++ b/platforms/blabsy-w3ds-auth-api/src/index.ts @@ -4,7 +4,8 @@ import cors from "cors"; import { config } from "dotenv"; import path from "path"; import { AuthController } from "./controllers/AuthController"; -import { initializeApp, cert, applicationDefault } from "firebase-admin/app"; +import { initializeApp, cert, applicationDefault, getApps } from "firebase-admin/app"; +import * as fs from "fs"; import { Web3Adapter } from "./web3adapter"; import { WebhookController, adapter } from "./controllers/WebhookController"; @@ -27,19 +28,67 @@ app.use(express.urlencoded({ limit: "50mb", extended: true })); const authController = new AuthController(); // Initialize Firebase Admin SDK (only if credentials are available) +let firebaseInitialized = false; try { - if (process.env.GOOGLE_APPLICATION_CREDENTIALS || process.env.FIREBASE_CREDENTIALS_PATH) { - initializeApp({ - credential: applicationDefault(), - }); + // Check if already initialized + if (getApps().length > 0) { + firebaseInitialized = true; + console.log("✅ Firebase Admin SDK already initialized"); + } else if (process.env.GOOGLE_APPLICATION_CREDENTIALS || process.env.FIREBASE_CREDENTIALS_PATH) { + const credentialsPath = process.env.GOOGLE_APPLICATION_CREDENTIALS || process.env.FIREBASE_CREDENTIALS_PATH; + + // Explicitly load credentials from file if path is provided + if (credentialsPath && fs.existsSync(credentialsPath)) { + try { + const serviceAccount = JSON.parse(fs.readFileSync(credentialsPath, "utf8")); + initializeApp({ + credential: cert(serviceAccount), + }); + firebaseInitialized = true; + console.log("✅ Firebase Admin SDK initialized with service account file"); + } catch (fileError: any) { + console.error("❌ Failed to load service account file:", fileError.message); + console.error(" File path:", credentialsPath); + // Fall back to applicationDefault + try { + initializeApp({ + credential: applicationDefault(), + }); + firebaseInitialized = true; + console.log("✅ Firebase Admin SDK initialized with applicationDefault (fallback)"); + } catch (fallbackError: any) { + console.error("❌ Failed to initialize with applicationDefault:", fallbackError.message); + } + } + } else { + // Try applicationDefault (for GCP metadata service or other default locations) + try { + initializeApp({ + credential: applicationDefault(), + }); + firebaseInitialized = true; + console.log("✅ Firebase Admin SDK initialized with applicationDefault"); + } catch (defaultError: any) { + console.error("❌ Failed to initialize with applicationDefault:", defaultError.message); + if (credentialsPath) { + console.error(" Credentials path was set but file not found:", credentialsPath); + } + } + } } else { console.warn("⚠️ Firebase credentials not configured. Firebase features will be disabled."); + console.warn(" Set GOOGLE_APPLICATION_CREDENTIALS or FIREBASE_CREDENTIALS_PATH environment variable"); } } catch (error: any) { - console.warn("⚠️ Failed to initialize Firebase Admin SDK:", error.message); + console.error("❌ Failed to initialize Firebase Admin SDK:", error.message); + console.error(" Stack:", error.stack); console.warn("⚠️ Firebase features will be disabled."); } +if (!firebaseInitialized) { + console.warn("⚠️ Firebase Admin SDK not initialized. Webhook and watcher features may fail."); +} + // Initialize Web3Adapter const web3Adapter = new Web3Adapter();