From 1a143ef7c7b71c44ffc91a8109822f8131edfeac Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Mon, 7 Jun 2021 09:50:03 +1000 Subject: [PATCH] Use route guards from jslib to reduce duplication --- src/popup/app-routing.module.ts | 21 ++++++++++--------- src/popup/services/lock-guard.service.ts | 19 +++++++++++++++++ ...ervice.ts => not-private-guard.service.ts} | 17 ++------------- src/popup/services/unauth-guard.service.ts | 19 +++++++++++++++++ 4 files changed, 51 insertions(+), 25 deletions(-) create mode 100644 src/popup/services/lock-guard.service.ts rename src/popup/services/{launch-guard.service.ts => not-private-guard.service.ts} (60%) create mode 100644 src/popup/services/unauth-guard.service.ts diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index 821cf1fed9..a46045443d 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -7,9 +7,10 @@ import { } from '@angular/router'; import { AuthGuardService } from 'jslib/angular/services/auth-guard.service'; -import { LockGuardService } from 'jslib/angular/services/lock-guard.service'; -import { LaunchGuardService } from './services/launch-guard.service'; +import { LockGuardService } from './services/lock-guard.service'; +import { NotPrivateGuardService } from './services/not-private-guard.service'; +import { UnauthGuardService } from './services/unauth-guard.service'; import { EnvironmentComponent } from './accounts/environment.component'; import { HintComponent } from './accounts/hint.component'; @@ -65,13 +66,13 @@ const routes: Routes = [ { path: 'home', component: HomeComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'home' }, }, { path: 'login', component: LoginComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'login' }, }, { @@ -83,19 +84,19 @@ const routes: Routes = [ { path: '2fa', component: TwoFactorComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: '2fa' }, }, { path: '2fa-options', component: TwoFactorOptionsComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: '2fa-options' }, }, { path: 'sso', component: SsoComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'sso' }, }, { @@ -106,19 +107,19 @@ const routes: Routes = [ { path: 'register', component: RegisterComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'register' }, }, { path: 'hint', component: HintComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'hint' }, }, { path: 'environment', component: EnvironmentComponent, - canActivate: [LaunchGuardService], + canActivate: [NotPrivateGuardService, UnauthGuardService], data: { state: 'environment' }, }, { diff --git a/src/popup/services/lock-guard.service.ts b/src/popup/services/lock-guard.service.ts new file mode 100644 index 0000000000..a211354c42 --- /dev/null +++ b/src/popup/services/lock-guard.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { + ActivatedRouteSnapshot, + CanActivate, + Router, +} from '@angular/router'; + +import { UserService } from 'jslib-common/abstractions/user.service'; +import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service'; + +@Injectable() +export class LockGuardService extends BaseLockGuardService { + constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService, + private router: Router) { + super(vaultTimeoutService, userService, router); + } + + protected landingPage = '/tabs/current'; +} diff --git a/src/popup/services/launch-guard.service.ts b/src/popup/services/not-private-guard.service.ts similarity index 60% rename from src/popup/services/launch-guard.service.ts rename to src/popup/services/not-private-guard.service.ts index b2ce3c504a..180601ef39 100644 --- a/src/popup/services/launch-guard.service.ts +++ b/src/popup/services/not-private-guard.service.ts @@ -10,7 +10,7 @@ import { UserService } from 'jslib/abstractions/user.service'; import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; @Injectable() -export class LaunchGuardService implements CanActivate { +export class NotPrivateGuardService implements CanActivate { constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService, private router: Router) { } @@ -19,19 +19,6 @@ export class LaunchGuardService implements CanActivate { 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 true; } } diff --git a/src/popup/services/unauth-guard.service.ts b/src/popup/services/unauth-guard.service.ts new file mode 100644 index 0000000000..4e2dcfbeae --- /dev/null +++ b/src/popup/services/unauth-guard.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { + Router, +} from '@angular/router'; + +import { UserService } from 'jslib-common/abstractions/user.service'; +import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service'; + +import { UnauthGuardService as BaseUnauthGuardService } from 'jslib/angular/services/unauth-guard.service'; + +@Injectable() +export class UnauthGuardService extends BaseUnauthGuardService { + constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService, + private router: Router) { + super(vaultTimeoutService, userService, router); + } + + protected landingPage: '/tabs/current'; +}