diff --git a/connect/communityGuard/connectAdminLoginGuard.guard.ts b/connect/communityGuard/connectAdminLoginGuard.guard.ts index 73fb7cd8..86040a07 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(false).pipe(map(user => { + return this.userManagementService.getUserInfo().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 7b2d2f66..e6b195f6 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(false).pipe(map(user => { + return this.userManagementService.getUserInfo().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 e82bb931..699be861 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(false).pipe(map(user => { + return this.userManagementService.getUserInfo().pipe(map(user => { return Session.isPortalAdministrator(user); })); })); diff --git a/login/adminLoginGuard.guard.ts b/login/adminLoginGuard.guard.ts index b80aba1b..f960123d 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(false).pipe(map(user => { + const obs = this.userManagementService.getUserInfo().pipe(map(user => { if (user) { errorCode = LoginErrorCodes.NOT_ADMIN; } diff --git a/login/claimsCuratorGuard.guard.ts b/login/claimsCuratorGuard.guard.ts index 39a1f1fe..88e8aad3 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(false).pipe(map(user => { + const obs = this.userManagementService.getUserInfo().pipe(map(user => { if (user) { errorCode = LoginErrorCodes.NOT_ADMIN; } diff --git a/login/loginGuard.guard.ts b/login/loginGuard.guard.ts index 3e2363a9..1cfd1e65 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(false).pipe(map(user => { + const obs = this.userManagementService.getUserInfo().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 d603ae1e..f39c8c30 100644 --- a/services/user-management.service.ts +++ b/services/user-management.service.ts @@ -13,11 +13,12 @@ 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); @@ -32,7 +33,7 @@ export class UserManagementService { resolve(); }); } - })); + }); this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { const token = COOKIE.getCookie('AccessToken'); @@ -43,8 +44,8 @@ export class UserManagementService { }) } - public getUserInfo(subject: boolean = true): Observable { - if(subject) { + public getUserInfo(): Observable { + if(this.initialized) { return this.getUserInfoSubject.asObservable(); } else { return from(this.getUserInfoAsync()); @@ -53,6 +54,7 @@ export class UserManagementService { private async getUserInfoAsync(): Promise { await this.promise; + this.initialized = true; return this.getUserInfoSubject.getValue(); }