Files
vmall/apps/mall/middleware/auth.ts
T

16 lines
514 B
TypeScript

export default defineNuxtRouteMiddleware(() => {
if (import.meta.server) return;
const token = localStorage.getItem("vmall.token");
let role: string | null = null;
try {
const raw = localStorage.getItem("vmall.user");
const user: unknown = raw ? JSON.parse(raw) : null;
if (user && typeof user === "object" && "role" in user && typeof user.role === "string") {
role = user.role;
}
} catch {
role = null;
}
if (!token || role !== "customer") return navigateTo("/login");
});