Implemented route guards for better navigation
This commit is contained in:
parent
10d3d8c50f
commit
08289e6745
|
@ -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: '**',
|
||||
|
|
|
@ -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]
|
||||
})
|
||||
|
|
18
frontend/src/app/services/logged-out-guard.service.ts
Normal file
18
frontend/src/app/services/logged-out-guard.service.ts
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
18
frontend/src/app/services/native-guard.service.ts
Normal file
18
frontend/src/app/services/native-guard.service.ts
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue