import { Injectable } from '@nestjs/common'; import { PassportStrategy } from '@nestjs/passport'; import { Strategy, ExtractJwt } from 'passport-firebase-jwt'; import * as admin from 'firebase-admin'; @Injectable() export class FirebaseStrategy extends PassportStrategy(Strategy, 'firebase') { constructor() { super({ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), }); admin.initializeApp({ credential: admin.credential.cert({ projectId: process.env.FIREBASE_PROJECT_ID, clientEmail: process.env.FIREBASE_CLIENT_EMAIL, privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'), }), }); } async validate(token: string) { const decodedToken = await admin.auth().verifyIdToken(token, true); return decodedToken; } }