Files
shaguabijia-admin-web/src/lib/auth.ts
T
marco 125b0e1339 傻瓜比价运营后台前端 (Next.js 15 + Ant Design 5)
admin 后台 P0 + 配置后台化:登录/大盘/用户(360+封号+调金币)/提现(重试+对账)/反馈/管理员/审计/系统配置;对接 shaguabijia-app-server 的 admin API(独立 JWT + RBAC + 审计)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 21:05:29 +08:00

36 lines
1.1 KiB
TypeScript

import type { AdminInfo } from './types';
const TOKEN_KEY = 'admin_token';
const ADMIN_KEY = 'admin_info';
export function setAuth(token: string, admin: AdminInfo): void {
localStorage.setItem(TOKEN_KEY, token);
localStorage.setItem(ADMIN_KEY, JSON.stringify(admin));
}
export function getToken(): string | null {
if (typeof window === 'undefined') return null;
return localStorage.getItem(TOKEN_KEY);
}
export function getAdmin(): AdminInfo | null {
if (typeof window === 'undefined') return null;
const s = localStorage.getItem(ADMIN_KEY);
return s ? (JSON.parse(s) as AdminInfo) : null;
}
export function clearAuth(): void {
localStorage.removeItem(TOKEN_KEY);
localStorage.removeItem(ADMIN_KEY);
}
export function isSuperAdmin(): boolean {
return getAdmin()?.role === 'super_admin';
}
/** 当前 admin 是否有权做某操作(super_admin 恒可;否则角色需在 allowed 内)。与后端 require_role 对齐。 */
export function canDo(allowed: string[]): boolean {
const role = getAdmin()?.role;
return role === 'super_admin' || (role != null && allowed.includes(role));
}