1
1
import Boom from '@hapi/boom' ;
2
2
import type { PluginSpecificConfiguration , Server } from '@hapi/hapi' ;
3
3
import admin from 'firebase-admin' ;
4
- import { DecodedIdToken } from 'firebase-admin/lib/auth/token-verifier' ;
4
+ import type { DecodedIdToken } from 'firebase-admin/lib/auth/token-verifier' ;
5
5
6
6
import { getConfig } from '../config' ;
7
7
import { USER_ROLE_LEVEL } from '../consts/model' ;
@@ -13,24 +13,6 @@ const firebaseApp = admin.initializeApp({
13
13
credential : admin . credential . cert ( getConfig ( 'GOOGLE_APPLICATION_CREDENTIALS' ) ) ,
14
14
} ) ;
15
15
16
- const setupInitialFirestoreUserData = async ( firebaseUserUid : string ) => {
17
- const firestore = firebaseApp . firestore ( ) ;
18
-
19
- await firestore
20
- . collection ( 'users' )
21
- . doc ( firebaseUserUid )
22
- . set (
23
- {
24
- gamesHq : {
25
- capabilities : [ ] ,
26
- } ,
27
- } ,
28
- {
29
- merge : true ,
30
- }
31
- ) ;
32
- } ;
33
-
34
16
const linkFirestoreUserIdToDatabaseUser = async ( firebaseUser : DecodedIdToken ) => {
35
17
// TODO this should not be hardcoded to x-team in the future?
36
18
const xteamOrganization = await findOrganizationByName ( 'x-team' ) ;
@@ -90,7 +72,7 @@ export const firebasePlugin = {
90
72
if ( ! firebasePlugin ) {
91
73
return h . continue ;
92
74
}
93
- const { requiresAuth, requiredCapabilities } = firebasePlugin ;
75
+ const { requiresAuth } = firebasePlugin ;
94
76
95
77
const {
96
78
query : { firebaseIdToken } ,
@@ -108,16 +90,13 @@ export const firebasePlugin = {
108
90
) . data ( ) ;
109
91
110
92
if ( ! firebaseUserData ) {
111
- await setupInitialFirestoreUserData ( firebaseUser . uid ) ;
112
93
firebaseUserData = { } ;
113
94
}
114
95
115
- const userCapabilities = firebaseUserData . gamesHq . capabilities || [ ] ;
116
- const meetsAllCapabilityChecks = requiredCapabilities . every ( ( capability ) =>
117
- userCapabilities . includes ( capability )
118
- ) ;
96
+ const userRole = firebaseUserData . role || 'user' ;
97
+ const isAdmin = userRole === 'admin' ;
119
98
120
- if ( ! meetsAllCapabilityChecks ) {
99
+ if ( ! isAdmin ) {
121
100
throw Boom . badRequest ( 'Lacking capabilities' ) ;
122
101
}
123
102
const firebaseUserRequestData = {
0 commit comments