const allowedRoles: Record = { shop_owner: true, shop_staff: true }; function hasAllowedRole(value: unknown): boolean { if (!value || typeof value !== "object" || !("role" in value)) return false; const role = value.role; return typeof role === "string" && allowedRoles[role] === true; } export default defineNuxtRouteMiddleware(() => { if (import.meta.server) return; const token = localStorage.getItem("vmall.token"); const rawUser = localStorage.getItem("vmall.user"); let user: unknown = null; try { user = rawUser ? JSON.parse(rawUser) : null; } catch { user = null; } if (!token || !hasAllowedRole(user)) return navigateTo("/login"); });