@@ -13,7 +13,13 @@ const getAppConfig = () => {
1313class OidcAuth {
1414 constructor ( ) {
1515 const { auth } = getAppConfig ( ) ;
16- const { clientId, endpoint, scope } = auth . oidc ;
16+ const {
17+ clientId,
18+ endpoint,
19+ scope,
20+ adminGroup,
21+ adminRole,
22+ } = auth . oidc ;
1723 const settings = {
1824 userStore : new WebStorageStateStore ( { store : window . localStorage } ) ,
1925 authority : endpoint ,
@@ -25,6 +31,8 @@ class OidcAuth {
2531 filterProtocolClaims : true ,
2632 } ;
2733
34+ this . adminGroup = adminGroup ;
35+ this . adminRole = adminRole ;
2836 this . userManager = new UserManager ( settings ) ;
2937 }
3038
@@ -43,22 +51,27 @@ class OidcAuth {
4351 if ( user === null ) {
4452 await this . userManager . signinRedirect ( ) ;
4553 } else {
46- const { roles, groups } = user . profile ;
54+ const { roles = [ ] , groups = [ ] } = user . profile ;
4755 const info = {
4856 groups,
4957 roles,
5058 } ;
59+ const isAdmin = ( Array . isArray ( groups ) && groups . includes ( this . adminGroup ) )
60+ || ( Array . isArray ( roles ) && roles . includes ( this . adminRole ) )
61+ || false ;
5162
52- statusMsg ( `user: ${ user . profile . preferred_username } ` , JSON . stringify ( info ) ) ;
63+ statusMsg ( `user: ${ user . profile . preferred_username } admin: ${ isAdmin } ` , JSON . stringify ( info ) ) ;
5364
5465 localStorage . setItem ( localStorageKeys . KEYCLOAK_INFO , JSON . stringify ( info ) ) ;
5566 localStorage . setItem ( localStorageKeys . USERNAME , user . profile . preferred_username ) ;
67+ localStorage . setItem ( localStorageKeys . ISADMIN , isAdmin ) ;
5668 }
5769 }
5870
5971 async logout ( ) {
6072 localStorage . removeItem ( localStorageKeys . USERNAME ) ;
6173 localStorage . removeItem ( localStorageKeys . KEYCLOAK_INFO ) ;
74+ localStorage . removeItem ( localStorageKeys . ISADMIN ) ;
6275
6376 try {
6477 await this . userManager . signoutRedirect ( ) ;
0 commit comments