feat: add role-based route middleware for access restriction

This commit is contained in:
2025-10-21 18:27:20 +02:00
parent b2588f9489
commit 13785861ba
3 changed files with 45 additions and 0 deletions

View 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' }));
}
});

View 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' }));
}
});

View 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' }));
}
});