diff --git a/src/app/app.module.ts b/src/app/app.module.ts index edbb022d..f0653d9c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,4 +1,4 @@ -import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http'; +import {HTTP_INTERCEPTORS, HttpClient, HttpClientModule} from '@angular/common/http'; import {APP_INITIALIZER, ChangeDetectorRef, NgModule} from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; @@ -119,7 +119,7 @@ export function loadConfig(oidcConfigService: OidcConfigService) }) export class AppModule { - constructor(private oidcSecurityService: OidcSecurityService, private oidcConfigService: OidcConfigService) + constructor(private oidcSecurityService: OidcSecurityService, private oidcConfigService: OidcConfigService, http: HttpClient) { this.oidcConfigService.onConfigurationLoaded.subscribe((configResult: ConfigResult) => { @@ -144,5 +144,7 @@ export class AppModule this.oidcSecurityService.setupModule(config, configResult.authWellknownEndpoints); }); + + http.get("/api/account/default-permissions").subscribe((result: string[]) => AuthGuard.defaultPermissions = result); } } diff --git a/src/app/misc/guards/authenticated-guard.service.ts b/src/app/misc/guards/authenticated-guard.service.ts index 3a5adee4..c9852a43 100644 --- a/src/app/misc/guards/authenticated-guard.service.ts +++ b/src/app/misc/guards/authenticated-guard.service.ts @@ -16,7 +16,8 @@ import {AuthService} from "../../services/auth.service"; export class AuthGuard { public static guards: any[] = []; - + public static defaultPermissions: string[]; + static forPermissions(...permissions: string[]) { @Injectable() @@ -55,7 +56,13 @@ export class AuthGuard } return true; } - return false; + else + { + for (let perm of permissions) + if (!AuthGuard.defaultPermissions.includes(perm)) + return false; + return true; + } } }