Skip to content

Commit 302e7a2

Browse files
fix(firebase): handle inline PEM certificate
1 parent 8571468 commit 302e7a2

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/modules/firebase/auth/server.auth.module.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,29 @@ import {
55
FIREBASE_AUTH_SERVER_ADMIN_APP,
66
FIREBASE_AUTH_SERVER_USER_JWT
77
} from './server.common'
8-
import { initializeApp, credential, auth } from 'firebase-admin'
8+
import { initializeApp, credential, auth, apps } from 'firebase-admin'
99
import { EnvironmentService } from '../../environment'
1010
import { FIREBASE_AUTH_COOKIE_STO_KEY } from './tokens'
1111
import { CookieService } from '../../cookies/browser'
1212

13+
function firebaseAdminAppAlreadyExists() {
14+
return apps.length ? true : false
15+
}
16+
17+
function repairInlinePem(str?: string) {
18+
return str ? str.replace(/\\n/g, '\n') : ''
19+
}
20+
1321
export function fbAdminFactory(es: EnvironmentService) {
14-
initializeApp({
15-
credential: credential.cert({
16-
projectId: es.config.FIREBASE_PROJECT_ID,
17-
clientEmail: es.config.SERVER_FIREBASE_CLIENT_EMAIL,
18-
privateKey: es.config.SERVER_FIREBASE_PRIVATE_KEY
19-
}),
20-
databaseURL: es.config.FIREBASE_DATABASE_URL
21-
})
22+
!firebaseAdminAppAlreadyExists &&
23+
initializeApp({
24+
credential: credential.cert({
25+
projectId: es.config.FIREBASE_PROJECT_ID,
26+
clientEmail: es.config.SERVER_FIREBASE_CLIENT_EMAIL,
27+
privateKey: repairInlinePem(es.config.SERVER_FIREBASE_PRIVATE_KEY)
28+
}),
29+
databaseURL: es.config.FIREBASE_DATABASE_URL
30+
})
2231
return auth()
2332
}
2433

0 commit comments

Comments
 (0)