panels-origin/web-saas/middleware/auth.global.ts
2026-08-21 16:55:01 -05:00

19 lines
547 B
TypeScript

export default defineNuxtRouteMiddleware(async (to) => {
if (to.path === "/login") return;
const { user, fetchMe } = useAuth();
try {
if (!user.value) {
await Promise.race([
fetchMe(),
new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), 4000)),
]);
}
} catch {
user.value = null;
}
if (!user.value) return navigateTo("/login");
if (user.value.role !== "platform_admin" || user.value.realm !== "platform") {
user.value = null;
return navigateTo("/login");
}
});