Skip to content

Commit 8fd9ecc

Browse files
committed
feat(router): implement role-based access control for package routes
1 parent 11bb140 commit 8fd9ecc

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

frontend/src/router.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,14 @@ const router = createRouter({
6262
name: "event-packages",
6363
component: () =>
6464
import("./views/Dashboard/Packages/PackagesView.vue"),
65+
meta: { roles: ["COORDINATOR", "ADMIN"] },
6566
},
6667
{
6768
path: "items",
6869
name: "packages-items",
6970
component: () =>
7071
import("./views/Dashboard/Packages/Items/PackageItemsView.vue"),
72+
meta: { roles: ["COORDINATOR", "ADMIN"] },
7173
},
7274
],
7375
},
@@ -94,6 +96,17 @@ router.beforeEach(async (to, from, next) => {
9496
return;
9597
}
9698

99+
// Role-based access control: if route defines allowed roles, verify user's role
100+
const requiredRoles = to.meta?.roles as string[] | undefined;
101+
if (requiredRoles && authStore.decoded) {
102+
const userRole = authStore.decoded.role as string | undefined;
103+
if (!userRole || !requiredRoles.includes(userRole)) {
104+
// Not allowed: redirect to dashboard
105+
next({ name: "dashboard" });
106+
return;
107+
}
108+
}
109+
97110
next();
98111
});
99112

0 commit comments

Comments
 (0)