@@ -17,7 +17,7 @@ import urlencode from 'urlencode';
17
17
import elasticsearch from 'elasticsearch' ;
18
18
import Promise from 'bluebird' ;
19
19
import AWS from 'aws-sdk' ;
20
- import { ADMIN_ROLES } from './constants' ;
20
+ import { ADMIN_ROLES , TOKEN_SCOPES } from './constants' ;
21
21
22
22
const exec = require ( 'child_process' ) . exec ;
23
23
const models = require ( './models' ) . default ;
@@ -71,7 +71,11 @@ _.assignIn(util, {
71
71
*/
72
72
hasRole : ( req , role ) => {
73
73
const isMachineToken = _ . get ( req , 'authUser.isMachine' , false ) ;
74
- if ( isMachineToken ) return true ;
74
+ const tokenScopes = _ . get ( req , 'authUser.scopes' , [ ] ) ;
75
+ if ( isMachineToken ) {
76
+ if ( _ . indexOf ( tokenScopes , TOKEN_SCOPES . CONNECT_PROJECT_ADMIN ) >= 0 ) return true ;
77
+ return false ;
78
+ }
75
79
let roles = _ . get ( req , 'authUser.roles' , [ ] ) ;
76
80
roles = roles . map ( s => s . toLowerCase ( ) ) ;
77
81
return _ . indexOf ( roles , role . toLowerCase ( ) ) >= 0 ;
@@ -84,7 +88,11 @@ _.assignIn(util, {
84
88
*/
85
89
hasRoles : ( req , roles ) => {
86
90
const isMachineToken = _ . get ( req , 'authUser.isMachine' , false ) ;
87
- if ( isMachineToken ) return true ;
91
+ const tokenScopes = _ . get ( req , 'authUser.scopes' , [ ] ) ;
92
+ if ( isMachineToken ) {
93
+ if ( _ . indexOf ( tokenScopes , TOKEN_SCOPES . CONNECT_PROJECT_ADMIN ) >= 0 ) return true ;
94
+ return false ;
95
+ }
88
96
let authRoles = _ . get ( req , 'authUser.roles' , [ ] ) ;
89
97
authRoles = authRoles . map ( s => s . toLowerCase ( ) ) ;
90
98
return _ . intersection ( authRoles , roles . map ( r => r . toLowerCase ( ) ) ) . length > 0 ;
@@ -106,7 +114,11 @@ _.assignIn(util, {
106
114
*/
107
115
hasAdminRole : ( req ) => {
108
116
const isMachineToken = _ . get ( req , 'authUser.isMachine' , false ) ;
109
- if ( isMachineToken ) return true ;
117
+ const tokenScopes = _ . get ( req , 'authUser.scopes' , [ ] ) ;
118
+ if ( isMachineToken ) {
119
+ if ( _ . indexOf ( tokenScopes , TOKEN_SCOPES . CONNECT_PROJECT_ADMIN ) >= 0 ) return true ;
120
+ return false ;
121
+ }
110
122
let roles = _ . get ( req , 'authUser.roles' , [ ] ) ;
111
123
roles = roles . map ( s => s . toLowerCase ( ) ) ;
112
124
return _ . intersection ( roles , ADMIN_ROLES . map ( r => r . toLowerCase ( ) ) ) . length > 0 ;
0 commit comments