You've already forked isop-mirror
feat: add role-based route middleware for access restriction
This commit is contained in:
15
frontend/app/middleware/adminOnly.ts
Normal file
15
frontend/app/middleware/adminOnly.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Role } from "~/types/role";
|
||||
import type { User } from "~/types/user";
|
||||
|
||||
export default defineNuxtRouteMiddleware(async (to) => {
|
||||
const user = useSanctumUser<User>();
|
||||
|
||||
// If user is not authenticated, let sanctum:auth handle it
|
||||
if (!user.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.value.role !== Role.ADMIN) {
|
||||
return abortNavigation(createError({ statusCode: 403, statusMessage: 'Forbidden' }));
|
||||
}
|
||||
});
|
||||
15
frontend/app/middleware/companyOnly.ts
Normal file
15
frontend/app/middleware/companyOnly.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Role } from "~/types/role";
|
||||
import type { User } from "~/types/user";
|
||||
|
||||
export default defineNuxtRouteMiddleware(async (to) => {
|
||||
const user = useSanctumUser<User>();
|
||||
|
||||
// If user is not authenticated, let sanctum:auth handle it
|
||||
if (!user.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.value.role !== Role.EMPLOYER) {
|
||||
return abortNavigation(createError({ statusCode: 403, statusMessage: 'Forbidden' }));
|
||||
}
|
||||
});
|
||||
15
frontend/app/middleware/studentOnly.ts
Normal file
15
frontend/app/middleware/studentOnly.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Role } from "~/types/role";
|
||||
import type { User } from "~/types/user";
|
||||
|
||||
export default defineNuxtRouteMiddleware(async (to) => {
|
||||
const user = useSanctumUser<User>();
|
||||
|
||||
// If user is not authenticated, let sanctum:auth handle it
|
||||
if (!user.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.value.role !== Role.STUDENT) {
|
||||
return abortNavigation(createError({ statusCode: 403, statusMessage: 'Forbidden' }));
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user