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 { CreateUserComponent } from './pages/create-user/create-user.component';
|
||||||
import { EditUserComponent } from './pages/edit-user/edit-user.component';
|
import { EditUserComponent } from './pages/edit-user/edit-user.component';
|
||||||
import { AdminGuard } from './services/admin-guard.service';
|
import { AdminGuard } from './services/admin-guard.service';
|
||||||
|
@ -17,12 +19,14 @@ const routes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: LoginComponent,
|
component: LoginComponent,
|
||||||
pathMatch: 'full'
|
pathMatch: 'full',
|
||||||
|
canActivate: [LoggedOutGuard]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'logout',
|
path: 'logout',
|
||||||
component: LoginComponent,
|
component: LoginComponent,
|
||||||
data: { logout: true }
|
data: { logout: true },
|
||||||
|
canActivate: [LoggedOutGuard]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
|
@ -47,24 +51,24 @@ const routes: Routes = [
|
||||||
component: EditAuthComponent,
|
component: EditAuthComponent,
|
||||||
data: { type: 'NATIVE' }
|
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: '',
|
path: '',
|
||||||
canActivate: [AdminGuard],
|
canActivate: [AdminGuard],
|
||||||
children: [
|
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',
|
path: 'users',
|
||||||
component: UsersComponent
|
component: UsersComponent
|
||||||
|
@ -81,7 +85,8 @@ const routes: Routes = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'password',
|
path: 'password',
|
||||||
component: PasswordComponent
|
component: PasswordComponent,
|
||||||
|
canActivate: [NativeGuard]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '**',
|
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 { SearchComponent } from './partials/search/search.component';
|
||||||
import { CreateUserComponent } from './pages/create-user/create-user.component';
|
import { CreateUserComponent } from './pages/create-user/create-user.component';
|
||||||
import { EditUserComponent } from './pages/edit-user/edit-user.component';
|
import { EditUserComponent } from './pages/edit-user/edit-user.component';
|
||||||
|
@ -78,7 +80,9 @@ import { UsersComponent } from './pages/users/users.component';
|
||||||
DomainsOperation,
|
DomainsOperation,
|
||||||
UsersOperation,
|
UsersOperation,
|
||||||
AuthGuard,
|
AuthGuard,
|
||||||
AdminGuard
|
AdminGuard,
|
||||||
|
NativeGuard,
|
||||||
|
LoggedOutGuard
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent]
|
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