11import Boom from '@hapi/boom' ;
22import type { PluginSpecificConfiguration , Server } from '@hapi/hapi' ;
33import 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' ;
55
66import { getConfig } from '../config' ;
77import { USER_ROLE_LEVEL } from '../consts/model' ;
@@ -13,24 +13,6 @@ const firebaseApp = admin.initializeApp({
1313 credential : admin . credential . cert ( getConfig ( 'GOOGLE_APPLICATION_CREDENTIALS' ) ) ,
1414} ) ;
1515
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-
3416const linkFirestoreUserIdToDatabaseUser = async ( firebaseUser : DecodedIdToken ) => {
3517 // TODO this should not be hardcoded to x-team in the future?
3618 const xteamOrganization = await findOrganizationByName ( 'x-team' ) ;
@@ -90,7 +72,7 @@ export const firebasePlugin = {
9072 if ( ! firebasePlugin ) {
9173 return h . continue ;
9274 }
93- const { requiresAuth, requiredCapabilities } = firebasePlugin ;
75+ const { requiresAuth } = firebasePlugin ;
9476
9577 const {
9678 query : { firebaseIdToken } ,
@@ -108,16 +90,13 @@ export const firebasePlugin = {
10890 ) . data ( ) ;
10991
11092 if ( ! firebaseUserData ) {
111- await setupInitialFirestoreUserData ( firebaseUser . uid ) ;
11293 firebaseUserData = { } ;
11394 }
11495
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' ;
11998
120- if ( ! meetsAllCapabilityChecks ) {
99+ if ( ! isAdmin ) {
121100 throw Boom . badRequest ( 'Lacking capabilities' ) ;
122101 }
123102 const firebaseUserRequestData = {
0 commit comments