125b0e1339
admin 后台 P0 + 配置后台化:登录/大盘/用户(360+封号+调金币)/提现(重试+对账)/反馈/管理员/审计/系统配置;对接 shaguabijia-app-server 的 admin API(独立 JWT + RBAC + 审计)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1.1 KiB
TypeScript
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));
|
|
}
|