feat: three nuxt frontends, demo seed, rounding + money-exponent + rate-cast fixes, archived specs

This commit is contained in:
Chengdong Zhang
2026-09-17 13:34:38 +08:00
parent dc9fd31c5e
commit 653f13161a
85 changed files with 4327 additions and 106 deletions
+22
View File
@@ -0,0 +1,22 @@
const allowedRoles: Record<string, true> = { 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");
});