Skip to content

Commit

Permalink
Prevent non admin users from accessing the admin screen through the U…
Browse files Browse the repository at this point in the history
…RL (#5474)

Signed-off-by: Giovanni Ferrari <giovanni.ferrari@soft.it>
  • Loading branch information
quinarygio committed Dec 6, 2023
1 parent 5d9de43 commit e33500d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
20 changes: 19 additions & 1 deletion ui/main/src/app/modules/admin/admin-routing.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/

import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';
import {ActivatedRouteSnapshot, CanActivateFn, RouterModule, RouterStateSnapshot, Routes} from '@angular/router';
import {AdminComponent} from './admin.component';
import {UsersTableComponent} from './components/table/users-table.component';
import {GroupsTableComponent} from './components/table/groups-table.component';
Expand All @@ -17,28 +17,44 @@ import {PerimetersTableComponent} from './components/table/perimeters-table.comp
import {ProcessesTableComponent} from './components/table/processes-table.component';
import {BusinessDataTableComponent} from './components/table/businessData-table.component';
import {SupervisedEntitiesTableComponent} from './components/table/supervised-entities-table.component';
import {UserService} from 'app/business/services/users/user.service';
import {PermissionEnum} from '@ofModel/permission.model';

const defaultPath = 'users';

const canActivateAdmin: CanActivateFn =
(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
return UserService.hasCurrentUserAnyPermission([PermissionEnum.ADMIN]);
};

const canActivateAdminBusinessProcess: CanActivateFn =
(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
return UserService.hasCurrentUserAnyPermission([PermissionEnum.ADMIN, PermissionEnum.ADMIN_BUSINESS_PROCESS]);
};

const routes: Routes = [
{
path: '',
component: AdminComponent,
children: [
{
path: 'users',
canActivate: [canActivateAdmin],
component: UsersTableComponent
},
{
path: 'entities',
canActivate: [canActivateAdmin],
component: EntitiesTableComponent
},
{
path: 'groups',
canActivate: [canActivateAdmin],
component: GroupsTableComponent
},
{
path: 'perimeters',
canActivate: [canActivateAdmin],
component: PerimetersTableComponent
},
{
Expand All @@ -47,10 +63,12 @@ const routes: Routes = [
},
{
path: 'businessData',
canActivate: [canActivateAdminBusinessProcess],
component: BusinessDataTableComponent
},
{
path: 'supervisedEntities',
canActivate: [canActivateAdmin],
component: SupervisedEntitiesTableComponent
},
{path: '**', redirectTo: defaultPath}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,25 @@
*/

import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';
import {ActivatedRouteSnapshot, CanActivateFn, RouterModule, RouterStateSnapshot, Routes} from '@angular/router';
import {ExternaldevicesconfigurationComponent} from './externaldevicesconfiguration.component';
import {DevicesTableComponent} from './table/devices.table.component';
import {UsersTableComponent} from './table/users.table.component';
import {PermissionEnum} from '@ofModel/permission.model';
import {UserService} from 'app/business/services/users/user.service';


const defaultPath = 'devices';

const canActivateAdmin: CanActivateFn =
(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
return UserService.hasCurrentUserAnyPermission([PermissionEnum.ADMIN]);
};

const routes: Routes = [
{
path: '',
canActivate: [canActivateAdmin],
component: ExternaldevicesconfigurationComponent,

children: [
Expand Down

0 comments on commit e33500d

Please sign in to comment.