firebase.strategy.ts 810 B

12345678910111213141516171819202122232425
  1. import { Injectable } from '@nestjs/common';
  2. import { PassportStrategy } from '@nestjs/passport';
  3. import { Strategy, ExtractJwt } from 'passport-firebase-jwt';
  4. import * as admin from 'firebase-admin';
  5. @Injectable()
  6. export class FirebaseStrategy extends PassportStrategy(Strategy, 'firebase') {
  7. constructor() {
  8. super({
  9. jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  10. });
  11. admin.initializeApp({
  12. credential: admin.credential.cert({
  13. projectId: process.env.FIREBASE_PROJECT_ID,
  14. clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
  15. privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
  16. }),
  17. });
  18. }
  19. async validate(token: string) {
  20. const decodedToken = await admin.auth().verifyIdToken(token, true);
  21. return decodedToken;
  22. }
  23. }