优化流程

This commit is contained in:
qaq
2025-07-02 15:40:14 +08:00
parent d7339af37b
commit 94e01ae63b
66 changed files with 5973 additions and 1988 deletions
+72
View File
@@ -0,0 +1,72 @@
import { getRoleIdFromToken, isTokenValid } from './jwt';
/**
* 权限工具类
*/
/**
* 获取当前用户的token
* @returns token
*/
export function getToken(): string | null {
return localStorage.getItem('token');
}
/**
* 获取当前用户的角色ID
* @returns 角色ID
*/
export function getCurrentUserRoleId(): number | null {
const token = getToken();
if (!token || !isTokenValid(token)) {
return null;
}
return getRoleIdFromToken(token);
}
/**
* 判断当前用户是否是管理员
* @returns 是否是管理员
*/
export function isAdmin(): boolean {
const roleId = getCurrentUserRoleId();
return roleId === 0;
}
/**
* 判断当前用户是否有指定角色
* @param targetRoleId 目标角色ID
* @returns 是否有指定角色
*/
export function hasRole(targetRoleId: number): boolean {
const roleId = getCurrentUserRoleId();
return roleId === targetRoleId;
}
/**
* 判断当前用户是否已登录且token有效
* @returns 是否已登录
*/
export function isLoggedIn(): boolean {
const token = getToken();
return token ? isTokenValid(token) : false;
}
/**
* 权限检查装饰器函数
* @param fn 要执行的函数
* @param errorMsg 权限不足时的错误提示
* @returns 包装后的函数
*/
export function requireAdmin<T extends (...args: any[]) => any>(
fn: T,
errorMsg: string = '权限不足,仅管理员可操作'
): T {
return ((...args: Parameters<T>) => {
if (!isAdmin()) {
console.warn(errorMsg);
return false;
}
return fn(...args);
}) as T;
}