31 lines
875 B
TypeScript
31 lines
875 B
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import * as admin from 'firebase-admin';
|
|
|
|
@Module({
|
|
imports: [ConfigModule],
|
|
providers: [
|
|
{
|
|
provide: 'FIREBASE_ADMIN',
|
|
inject: [ConfigService],
|
|
useFactory: (configService: ConfigService) => {
|
|
const serviceAccount = {
|
|
projectId: configService.get<string>('FIREBASE_PROJECT_ID'),
|
|
clientEmail: configService.get<string>('FIREBASE_CLIENT_EMAIL'),
|
|
privateKey: configService.get<string>('FIREBASE_PRIVATE_KEY')?.replace(/\\n/g, '\n'),
|
|
};
|
|
|
|
if (!admin.apps.length) {
|
|
admin.initializeApp({
|
|
credential: admin.credential.cert(serviceAccount),
|
|
});
|
|
}
|
|
|
|
return admin;
|
|
},
|
|
},
|
|
],
|
|
exports: ['FIREBASE_ADMIN'],
|
|
})
|
|
export class FirebaseAdminModule {}
|