1
1
import { inCI , inDevelopment } from '../../config'
2
2
import { User as UserModel } from '../db/models'
3
3
import { User } from '../types'
4
- import { adminIams , powerUserIam } from '../util/config'
4
+ import { adminIams , powerUserIam , statsViewerIams } from '../util/config'
5
5
6
6
const parseIamGroups = ( iamGroups : string ) =>
7
7
iamGroups ?. split ( ';' ) . filter ( Boolean ) ?? [ ]
@@ -40,6 +40,7 @@ const userMiddleware = async (req: any, _res: any, next: any) => {
40
40
iamGroups,
41
41
isAdmin : checkAdmin ( iamGroups ) ,
42
42
isPowerUser : isPowerUser ( iamGroups ) ,
43
+ isStatsViewer : statsViewerIams . some ( ( iam ) => iamGroups . includes ( iam ) ) ,
43
44
}
44
45
45
46
const adminLoggedInAsId = req . headers [ 'x-admin-logged-in-as' ]
@@ -49,7 +50,15 @@ const userMiddleware = async (req: any, _res: any, next: any) => {
49
50
if ( ! hijackedUser ) {
50
51
return next ( new Error ( 'User not found' ) )
51
52
}
52
- req . user = { email : acualUser . email , ...hijackedUser . toJSON ( ) }
53
+ const isStatsViewer = statsViewerIams . some ( ( iam ) =>
54
+ hijackedUser . iamGroups . includes ( iam )
55
+ )
56
+
57
+ req . user = {
58
+ email : acualUser . email ,
59
+ ...hijackedUser . toJSON ( ) ,
60
+ isStatsViewer,
61
+ }
53
62
req . hijackedBy = acualUser
54
63
} else {
55
64
req . user = acualUser
0 commit comments