update select department page
This commit is contained in:
parent
872f0f2383
commit
baa5382c8b
5 changed files with 325 additions and 244 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import {inject, NgModule} from '@angular/core';
|
||||
import { inject, NgModule } from '@angular/core';
|
||||
import {
|
||||
ActivatedRouteSnapshot,
|
||||
CanActivateFn,
|
||||
|
|
@ -7,9 +7,9 @@ import {
|
|||
RouterStateSnapshot,
|
||||
Routes,
|
||||
} from '@angular/router';
|
||||
import {UserService} from './core/services/user.service';
|
||||
import {map} from 'rxjs';
|
||||
import {UserPermissions} from "./core/auth/userPermissions";
|
||||
import { UserService } from './core/services/user.service';
|
||||
import { map } from 'rxjs';
|
||||
import { UserPermissions } from './core/auth/userPermissions';
|
||||
|
||||
const authGuard: CanActivateFn = (
|
||||
route: ActivatedRouteSnapshot,
|
||||
|
|
@ -32,35 +32,38 @@ const authGuard: CanActivateFn = (
|
|||
);
|
||||
};
|
||||
|
||||
const permissionsGuard: (...requiredPermissions: UserPermissions[]) => CanActivateFn = (...requiredPermissions) => (
|
||||
route: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot
|
||||
) => {
|
||||
const userService: UserService = inject(UserService);
|
||||
const router: Router = inject(Router);
|
||||
const permissionsGuard: (
|
||||
...requiredPermissions: UserPermissions[]
|
||||
) => CanActivateFn =
|
||||
(...requiredPermissions) =>
|
||||
(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
|
||||
const userService: UserService = inject(UserService);
|
||||
const router: Router = inject(Router);
|
||||
|
||||
const user = userService.getCurrentUser()
|
||||
if (user == null)
|
||||
return router.createUrlTree(['/login'], {
|
||||
const user = userService.getCurrentUser();
|
||||
if (user == null)
|
||||
return router.createUrlTree(['/login'], {
|
||||
queryParams: {
|
||||
redirectUrl: state.url,
|
||||
},
|
||||
});
|
||||
|
||||
if (
|
||||
requiredPermissions.every((permission) =>
|
||||
user.permissions.includes(permission)
|
||||
)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return router.createUrlTree(['/unauthorized'], {
|
||||
queryParams: {
|
||||
redirectUrl: state.url,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
if (requiredPermissions.every(permission => user.permissions.includes(permission))) {
|
||||
return true
|
||||
}
|
||||
|
||||
return router.createUrlTree(['/unauthorized'], {
|
||||
queryParams: {
|
||||
redirectUrl: state.url,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const loginGuard: CanActivateFn = (
|
||||
route: ActivatedRouteSnapshot
|
||||
) => {
|
||||
const loginGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {
|
||||
const userService: UserService = inject(UserService);
|
||||
const router: Router = inject(Router);
|
||||
|
||||
|
|
@ -72,7 +75,7 @@ const loginGuard: CanActivateFn = (
|
|||
// redirect to redirectUrl query param
|
||||
console.log(route.queryParams['redirectUrl']);
|
||||
return router.createUrlTree([
|
||||
router.parseUrl(route.queryParams['redirectUrl'] ?? 'select-country'),
|
||||
router.parseUrl(route.queryParams['redirectUrl'] ?? 'departments'),
|
||||
]);
|
||||
// return false;
|
||||
})
|
||||
|
|
@ -94,9 +97,12 @@ const routes: Routes = [
|
|||
),
|
||||
},
|
||||
{
|
||||
path: 'select-country',
|
||||
loadComponent: () => import('./core/department/select-country.component').then(m => m.SelectCountryComponent),
|
||||
canActivate: [authGuard]
|
||||
path: 'departments',
|
||||
loadComponent: () =>
|
||||
import('./core/department/department.component').then(
|
||||
(m) => m.DepartmentComponent
|
||||
),
|
||||
canActivate: [authGuard],
|
||||
},
|
||||
{
|
||||
path: ':department',
|
||||
|
|
@ -109,15 +115,21 @@ const routes: Routes = [
|
|||
import('./features/recipes/recipes.component').then(
|
||||
(m) => m.RecipesComponent
|
||||
),
|
||||
canActivate: [authGuard, permissionsGuard(UserPermissions.THAI_PERMISSION)],
|
||||
canActivate: [
|
||||
authGuard,
|
||||
permissionsGuard(UserPermissions.THAI_PERMISSION),
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'recipe/:productCode',
|
||||
loadComponent: () =>
|
||||
import(
|
||||
'./features/recipes/recipe-details/recipe-details.component'
|
||||
).then((m) => m.RecipeDetailsComponent),
|
||||
canActivate: [authGuard, permissionsGuard(UserPermissions.THAI_PERMISSION)],
|
||||
).then((m) => m.RecipeDetailsComponent),
|
||||
canActivate: [
|
||||
authGuard,
|
||||
permissionsGuard(UserPermissions.THAI_PERMISSION),
|
||||
],
|
||||
},
|
||||
// {
|
||||
// path: 'log',
|
||||
|
|
@ -128,18 +140,22 @@ const routes: Routes = [
|
|||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
pathMatch: 'full',
|
||||
redirectTo: 'departments',
|
||||
},
|
||||
{
|
||||
path: 'unauthorized',
|
||||
loadComponent: () => import('./core/auth/unauthorized.component').then((m) => m.UnauthorizedComponent)
|
||||
loadComponent: () =>
|
||||
import('./core/auth/unauthorized.component').then(
|
||||
(m) => m.UnauthorizedComponent
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'notfound',
|
||||
loadComponent: () => import('./core/notfound.component').then((m) => m.NotfoundComponent)
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
pathMatch: 'full',
|
||||
redirectTo: 'select-country'
|
||||
loadComponent: () =>
|
||||
import('./core/notfound.component').then((m) => m.NotfoundComponent),
|
||||
},
|
||||
{
|
||||
path: '**',
|
||||
|
|
@ -151,5 +167,4 @@ const routes: Routes = [
|
|||
imports: [RouterModule.forRoot(routes)],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
export class AppRoutingModule {
|
||||
}
|
||||
export class AppRoutingModule {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue