diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index eb3c020..c5ff5ca 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -1,3 +1,5 @@ +import { NativeGuard } from './services/native-guard.service'; +import { LoggedOutGuard } from './services/logged-out-guard.service'; import { CreateUserComponent } from './pages/create-user/create-user.component'; import { EditUserComponent } from './pages/edit-user/edit-user.component'; import { AdminGuard } from './services/admin-guard.service'; @@ -17,12 +19,14 @@ const routes: Routes = [ { path: '', component: LoginComponent, - pathMatch: 'full' + pathMatch: 'full', + canActivate: [LoggedOutGuard] }, { path: 'logout', component: LoginComponent, - data: { logout: true } + data: { logout: true }, + canActivate: [LoggedOutGuard] }, { path: '', @@ -47,24 +51,24 @@ const routes: Routes = [ component: EditAuthComponent, data: { type: 'NATIVE' } }, - { - path: 'domains/create/slave', - component: CreateSlaveComponent - }, - { - path: 'domains/create/master', - component: CreateAuthComponent, - data: { type: 'MASTER' } - }, - { - path: 'domains/create/native', - component: CreateAuthComponent, - data: { type: 'NATIVE' } - }, { path: '', canActivate: [AdminGuard], children: [ + { + path: 'domains/create/slave', + component: CreateSlaveComponent + }, + { + path: 'domains/create/master', + component: CreateAuthComponent, + data: { type: 'MASTER' } + }, + { + path: 'domains/create/native', + component: CreateAuthComponent, + data: { type: 'NATIVE' } + }, { path: 'users', component: UsersComponent @@ -81,7 +85,8 @@ const routes: Routes = [ }, { path: 'password', - component: PasswordComponent + component: PasswordComponent, + canActivate: [NativeGuard] }, { path: '**', diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 3e95f45..f03a371 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -1,3 +1,5 @@ +import { LoggedOutGuard } from './services/logged-out-guard.service'; +import { NativeGuard } from './services/native-guard.service'; import { SearchComponent } from './partials/search/search.component'; import { CreateUserComponent } from './pages/create-user/create-user.component'; import { EditUserComponent } from './pages/edit-user/edit-user.component'; @@ -78,7 +80,9 @@ import { UsersComponent } from './pages/users/users.component'; DomainsOperation, UsersOperation, AuthGuard, - AdminGuard + AdminGuard, + NativeGuard, + LoggedOutGuard ], bootstrap: [AppComponent] }) diff --git a/frontend/src/app/services/logged-out-guard.service.ts b/frontend/src/app/services/logged-out-guard.service.ts new file mode 100644 index 0000000..3b9b4ab --- /dev/null +++ b/frontend/src/app/services/logged-out-guard.service.ts @@ -0,0 +1,18 @@ +import { StateService } from './state.service'; +import { Injectable } from '@angular/core'; +import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; + +@Injectable() +export class LoggedOutGuard implements CanActivate { + + constructor(private gs: StateService, private router: Router) { } + + canActivate(): boolean { + if (this.gs.isLoggedIn) { + this.router.navigate(['/domains']); + return false; + } else { + return true; + } + } +} diff --git a/frontend/src/app/services/native-guard.service.ts b/frontend/src/app/services/native-guard.service.ts new file mode 100644 index 0000000..0ec74f5 --- /dev/null +++ b/frontend/src/app/services/native-guard.service.ts @@ -0,0 +1,18 @@ +import { StateService } from './state.service'; +import { Injectable } from '@angular/core'; +import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; + +@Injectable() +export class NativeGuard implements CanActivate { + + constructor(private gs: StateService, private router: Router) { } + + canActivate(): boolean { + if (!this.gs.isNative) { + this.router.navigate(['/']); + return false; + } else { + return true; + } + } +}