diff --git a/connect/communityGuard/connectAdminLoginGuard.guard.ts b/connect/communityGuard/connectAdminLoginGuard.guard.ts index 86040a07..73fb7cd8 100644 --- a/connect/communityGuard/connectAdminLoginGuard.guard.ts +++ b/connect/communityGuard/connectAdminLoginGuard.guard.ts @@ -28,7 +28,7 @@ export class ConnectAdminLoginGuard implements CanActivate, CanLoad { let errorCode = LoginErrorCodes.NOT_LOGIN; let email = null; const authorized = this.propertiesService.subscribeEnvironment().pipe(map(res => res), mergeMap(properties => { - return this.userManagementService.getUserInfo().pipe(map(user => { + return this.userManagementService.getUserInfo(false).pipe(map(user => { if (user) { email = user.email; if (Session.isPortalAdministrator(user) || Session.isCommunityCurator(user)) { diff --git a/connect/communityGuard/connectSubscriber.guard.ts b/connect/communityGuard/connectSubscriber.guard.ts index e6b195f6..7b2d2f66 100644 --- a/connect/communityGuard/connectSubscriber.guard.ts +++ b/connect/communityGuard/connectSubscriber.guard.ts @@ -23,7 +23,7 @@ export class ConnectSubscriberGuard implements CanActivate { let errorCode = LoginErrorCodes.NOT_LOGIN; let email = null; const subscribed = this.propertiesService.subscribeEnvironment().pipe(map(res => res), mergeMap(properties => { - return this.userManagementService.getUserInfo().pipe(map(user => { + return this.userManagementService.getUserInfo(false).pipe(map(user => { if (user) { errorCode = LoginErrorCodes.NOT_SUBSCRIBER; email = user.email; diff --git a/connect/communityGuard/isCommunityOrAdmin.ts b/connect/communityGuard/isCommunityOrAdmin.ts index 699be861..e82bb931 100644 --- a/connect/communityGuard/isCommunityOrAdmin.ts +++ b/connect/communityGuard/isCommunityOrAdmin.ts @@ -19,7 +19,7 @@ export class IsCommunityOrAdmin implements CanActivate { return true; } else { const obs = this.propertiesService.subscribeEnvironment().pipe(mergeMap(properties => { - return this.userManagementService.getUserInfo().pipe(map(user => { + return this.userManagementService.getUserInfo(false).pipe(map(user => { return Session.isPortalAdministrator(user); })); })); diff --git a/login/adminLoginGuard.guard.ts b/login/adminLoginGuard.guard.ts index f960123d..b80aba1b 100644 --- a/login/adminLoginGuard.guard.ts +++ b/login/adminLoginGuard.guard.ts @@ -15,7 +15,7 @@ export class AdminLoginGuard implements CanActivate { check(path: string): Observable { let errorCode = LoginErrorCodes.NOT_LOGIN; - const obs = this.userManagementService.getUserInfo().pipe(map(user => { + const obs = this.userManagementService.getUserInfo(false).pipe(map(user => { if (user) { errorCode = LoginErrorCodes.NOT_ADMIN; } diff --git a/login/claimsCuratorGuard.guard.ts b/login/claimsCuratorGuard.guard.ts index 88e8aad3..39a1f1fe 100644 --- a/login/claimsCuratorGuard.guard.ts +++ b/login/claimsCuratorGuard.guard.ts @@ -15,7 +15,7 @@ export class ClaimsCuratorGuard implements CanActivate { check(path: string): Observable | boolean { let errorCode = LoginErrorCodes.NOT_LOGIN; - const obs = this.userManagementService.getUserInfo().pipe(map(user => { + const obs = this.userManagementService.getUserInfo(false).pipe(map(user => { if (user) { errorCode = LoginErrorCodes.NOT_ADMIN; } diff --git a/login/loginGuard.guard.ts b/login/loginGuard.guard.ts index 1cfd1e65..3e2363a9 100644 --- a/login/loginGuard.guard.ts +++ b/login/loginGuard.guard.ts @@ -15,7 +15,7 @@ export class LoginGuard implements CanActivate, CanLoad { check(path: string): Observable | boolean { if (Session.isLoggedIn()) { - const obs = this.userManagementService.getUserInfo().pipe(map(user => { + const obs = this.userManagementService.getUserInfo(false).pipe(map(user => { return user !== null; })); obs.pipe(filter(isLoggedIn => !isLoggedIn)).subscribe(() => { diff --git a/services/user-management.service.ts b/services/user-management.service.ts index f39c8c30..d603ae1e 100644 --- a/services/user-management.service.ts +++ b/services/user-management.service.ts @@ -13,12 +13,11 @@ import {properties} from "../../../environments/environment"; export class UserManagementService { private getUserInfoSubject: BehaviorSubject = new BehaviorSubject(null); - private initialized = false private readonly promise: Promise; constructor(private http: HttpClient, private router: Router) { - this.promise = new Promise(resolve => { + this.promise = new Promise((resolve => { const token = COOKIE.getCookie('AccessToken'); if (!token) { this.getUserInfoSubject.next(null); @@ -33,7 +32,7 @@ export class UserManagementService { resolve(); }); } - }); + })); this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { const token = COOKIE.getCookie('AccessToken'); @@ -44,8 +43,8 @@ export class UserManagementService { }) } - public getUserInfo(): Observable { - if(this.initialized) { + public getUserInfo(subject: boolean = true): Observable { + if(subject) { return this.getUserInfoSubject.asObservable(); } else { return from(this.getUserInfoAsync()); @@ -54,7 +53,6 @@ export class UserManagementService { private async getUserInfoAsync(): Promise { await this.promise; - this.initialized = true; return this.getUserInfoSubject.getValue(); }