conflict-nuxt-4/app/middleware/route.global.ts
2026-02-12 11:24:27 +03:30

35 lines
1011 B
TypeScript
Executable File

import { getUserPermission } from "@/stores/permissionStore";
import { useStorage } from "@vueuse/core";
export default defineNuxtRouteMiddleware(async (to, from) => {
let toRoute = useStorage("to_route", to.path);
const userPermissionStore = getUserPermission();
// let localStorageToRoute = toRoute.value;
userPermissionStore.fetchUserPermissions();
const publicRoutes = ["/403", "/login", from.path];
if (publicRoutes.includes(to.path)) return true;
if (
!userPermissionStore.permissions ||
!userPermissionStore.permissions.length
) {
try {
await userPermissionStore.fetchUserPermissions();
} catch (err) {
console.error("Error fetching permissions:", err);
return navigateTo("/403");
}
}
const canAccess = userPermissionStore.hasPagePermission(to.fullPath);
// console.log("Checking permission for route:", to.fullPath, canAccess);
if (!canAccess) {
return navigateTo("/403");
}
return true;
});