diff --git a/src/ui_ng/src/app/base/navigator/navigator.component.ts b/src/ui_ng/src/app/base/navigator/navigator.component.ts index a28d7d7a0..420cdca55 100644 --- a/src/ui_ng/src/app/base/navigator/navigator.component.ts +++ b/src/ui_ng/src/app/base/navigator/navigator.component.ts @@ -27,7 +27,7 @@ export class NavigatorComponent implements OnInit { private selectedLang: string = enLang; private appTitle: string = 'APP_TITLE.HARBOR'; - + constructor( private session: SessionService, private router: Router, @@ -36,8 +36,8 @@ export class NavigatorComponent implements OnInit { private appConfigService: AppConfigService, private msgHandler: MessageHandlerService, private searchTrigger: SearchTriggerService) { - - } + + } ngOnInit(): void { this.selectedLang = this.translate.currentLang; @@ -80,8 +80,8 @@ export class NavigatorComponent implements OnInit { public get canChangePassword(): boolean { return this.session.getCurrentUser() && - this.appConfigService.getConfig() && - this.appConfigService.getConfig().auth_mode != 'ldap_auth'; + this.appConfigService.getConfig() && + this.appConfigService.getConfig().auth_mode != 'ldap_auth'; } matchLang(lang: string): boolean { @@ -114,17 +114,14 @@ export class NavigatorComponent implements OnInit { //Log out system logOut(): void { - this.session.signOff() - .then(() => { - //Naviagte to the sign in route - this.router.navigate([CommonRoutes.EMBEDDED_SIGN_IN]); - this.session.clear();//Destroy session cache - }) - .catch(error => { - this.msgHandler.handleError(error); - }); + //Naviagte to the sign in route + //Appending 'signout' means destroy session cache + let navigatorExtra: NavigationExtras = { + queryParams: { "signout": true } + }; + this.router.navigate([CommonRoutes.EMBEDDED_SIGN_IN], navigatorExtra); //Confirm search result panel is close - this.searchTrigger.closeSearch(true); + this.searchTrigger.closeSearch(true); } //Switch languages @@ -136,7 +133,7 @@ export class NavigatorComponent implements OnInit { //TODO: console.error('Language ' + lang.trim() + ' is not suppoted'); } - setTimeout(()=>{ + setTimeout(() => { window.location.reload(); }, 500); } diff --git a/src/ui_ng/src/app/shared/route/sign-in-guard-activate.service.ts b/src/ui_ng/src/app/shared/route/sign-in-guard-activate.service.ts index 18d0400ee..b4358cb22 100644 --- a/src/ui_ng/src/app/shared/route/sign-in-guard-activate.service.ts +++ b/src/ui_ng/src/app/shared/route/sign-in-guard-activate.service.ts @@ -15,19 +15,33 @@ export class SignInGuard implements CanActivate, CanActivateChild { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise | boolean { //If user has logged in, should not login again return new Promise((resolve, reject) => { - let user = this.authService.getCurrentUser(); - if (user === null) { - this.authService.retrieveUser() + //If signout appended + let queryParams = route.queryParams; + if (queryParams && queryParams['signout']) { + this.authService.signOff() .then(() => { - this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); - return resolve(false); + this.authService.clear();//Destroy session cache + return resolve(true); }) .catch(error => { - return resolve(true); + console.error(error); + return resolve(false); }); } else { - this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); - return resolve(false); + let user = this.authService.getCurrentUser(); + if (user === null) { + this.authService.retrieveUser() + .then(() => { + this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); + return resolve(false); + }) + .catch(error => { + return resolve(true); + }); + } else { + this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); + return resolve(false); + } } }); }