diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index 7732a191b86..7a839032203 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -9,6 +9,7 @@ import { import { AuthGuardService } from 'jslib-angular/services/auth-guard.service'; import { LaunchGuardService } from './services/launch-guard.service'; +import { LockGuardService } from './services/lock-guard.service'; import { EnvironmentComponent } from './accounts/environment.component'; import { HintComponent } from './accounts/hint.component'; @@ -76,6 +77,7 @@ const routes: Routes = [ { path: 'lock', component: LockComponent, + canActivate: [LockGuardService], data: { state: 'lock' }, }, { diff --git a/src/popup/services/launch-guard.service.ts b/src/popup/services/launch-guard.service.ts index 4f82e5d9eef..fa7f24fcf7b 100644 --- a/src/popup/services/launch-guard.service.ts +++ b/src/popup/services/launch-guard.service.ts @@ -6,32 +6,17 @@ import { Router, } from '@angular/router'; -import { UserService } from 'jslib-common/abstractions/user.service'; -import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service'; +import { UnauthGuardService } from './unauth-guard.service'; @Injectable() export class LaunchGuardService implements CanActivate { - constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService, - private router: Router) { } + constructor(private router: Router, private unauthGuardService: UnauthGuardService) { } async canActivate() { if (BrowserApi.getBackgroundPage() == null) { this.router.navigate(['private-mode']); return false; } - - const isAuthed = await this.userService.isAuthenticated(); - if (!isAuthed) { - return true; - } - - const locked = await this.vaultTimeoutService.isLocked(); - if (locked) { - this.router.navigate(['lock']); - } else { - this.router.navigate(['tabs/current']); - } - - return false; + return await this.unauthGuardService.canActivate(); } } diff --git a/src/popup/services/lock-guard.service.ts b/src/popup/services/lock-guard.service.ts new file mode 100644 index 00000000000..03306d05482 --- /dev/null +++ b/src/popup/services/lock-guard.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { LockGuardService as BaseLockGuardService } from 'jslib-angular/services/lock-guard.service'; + +@Injectable() +export class LockGuardService extends BaseLockGuardService { + protected homepage = 'tabs/current'; +} diff --git a/src/popup/services/services.module.ts b/src/popup/services/services.module.ts index 4ef57fa482f..bdab984adab 100644 --- a/src/popup/services/services.module.ts +++ b/src/popup/services/services.module.ts @@ -6,7 +6,9 @@ import { import { ToasterModule } from 'angular2-toaster'; +import { LockGuardService } from './lock-guard.service'; import { LaunchGuardService } from './launch-guard.service'; +import { UnauthGuardService } from './unauth-guard.service'; import { AuthGuardService } from 'jslib-angular/services/auth-guard.service'; import { BroadcasterService } from 'jslib-angular/services/broadcaster.service'; @@ -116,7 +118,9 @@ export function initFactory(platformUtilsService: PlatformUtilsService, i18nServ providers: [ ValidationService, AuthGuardService, + LockGuardService, LaunchGuardService, + UnauthGuardService, PopupUtilsService, BroadcasterService, { provide: MessagingService, useValue: messagingService }, diff --git a/src/popup/services/unauth-guard.service.ts b/src/popup/services/unauth-guard.service.ts new file mode 100644 index 00000000000..e74857bb8cb --- /dev/null +++ b/src/popup/services/unauth-guard.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { UnauthGuardService as BaseUnauthGuardService } from 'jslib-angular/services/unauth-guard.service'; + +@Injectable() +export class UnauthGuardService extends BaseUnauthGuardService { + protected homepage = 'tabs/current'; +}