Skip to content

Commit

Permalink
perf(projects): add detailed annotations for route role
Browse files Browse the repository at this point in the history
  • Loading branch information
honghuangdc committed Jan 15, 2024
1 parent c5c456b commit 2a0ec38
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/router/guard/permission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ export function createPermissionGuard(router: Router) {
const loginRoute: RouteKey = 'login';
const noPermissionRoute: RouteKey = '403';

// check whether the user has permission to access the route
// 1. if the route's "roles" is empty, then it is allowed to access
// 2. if the user is super admin, then it is allowed to access
// 3. if the user's role is included in the route's "roles", then it is allowed to access
const SUPER_ADMIN = 'R_SUPER';
const hasPermission =
!routeRoles.length ||
Expand Down
3 changes: 3 additions & 0 deletions src/store/modules/route/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import SvgIcon from '@/components/custom/svg-icon.vue';
export function filterAuthRoutesByRoles(routes: ElegantConstRoute[], roles: string[]) {
const SUPER_ROLE = 'R_SUPER';

// if the user is super admin, then it is allowed to access all routes
if (roles.includes(SUPER_ROLE)) {
return routes;
}
Expand All @@ -29,10 +30,12 @@ export function filterAuthRoutesByRoles(routes: ElegantConstRoute[], roles: stri
function filterAuthRouteByRoles(route: ElegantConstRoute, roles: string[]) {
const routeRoles = (route.meta && route.meta.roles) || [];

// if the route's "roles" is empty, then it is allowed to access
if (!routeRoles.length) {
return [route];
}

// if the user's role is included in the route's "roles", then it is allowed to access
const hasPermission = routeRoles.some(role => roles.includes(role));

const filterRoute = { ...route };
Expand Down

0 comments on commit 2a0ec38

Please sign in to comment.