mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-29 07:56:37 +08:00
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
import { getRoleIdFromToken, isTokenValid } from './jwt'
|
|
|
|
/**
|
|
* 权限工具类
|
|
*/
|
|
|
|
/**
|
|
* 获取当前用户的token
|
|
* @returns {string|null} token
|
|
*/
|
|
export function getToken() {
|
|
return localStorage.getItem('token')
|
|
}
|
|
|
|
/**
|
|
* 获取当前用户的角色ID
|
|
* @returns {number|null} 角色ID
|
|
*/
|
|
export function getCurrentUserRoleId() {
|
|
const token = getToken()
|
|
if (!token || !isTokenValid(token)) {
|
|
return null
|
|
}
|
|
return getRoleIdFromToken(token)
|
|
}
|
|
|
|
/**
|
|
* 判断当前用户是否是管理员
|
|
* @returns {boolean} 是否是管理员
|
|
*/
|
|
export function isAdmin() {
|
|
const roleId = getCurrentUserRoleId()
|
|
return roleId === 0
|
|
}
|
|
|
|
/**
|
|
* 判断当前用户是否有指定角色
|
|
* @param {number} targetRoleId 目标角色ID
|
|
* @returns {boolean} 是否有指定角色
|
|
*/
|
|
export function hasRole(targetRoleId) {
|
|
const roleId = getCurrentUserRoleId()
|
|
return roleId === targetRoleId
|
|
}
|
|
|
|
/**
|
|
* 判断当前用户是否已登录且token有效
|
|
* @returns {boolean} 是否已登录
|
|
*/
|
|
export function isLoggedIn() {
|
|
const token = getToken()
|
|
return token && isTokenValid(token)
|
|
}
|
|
|
|
/**
|
|
* 权限检查装饰器函数
|
|
* @param {Function} fn 要执行的函数
|
|
* @param {string} errorMsg 权限不足时的错误提示
|
|
* @returns {Function} 包装后的函数
|
|
*/
|
|
export function requireAdmin(fn, errorMsg = '权限不足,仅管理员可操作') {
|
|
return function(...args) {
|
|
if (!isAdmin()) {
|
|
// 可以在这里集成消息提示组件
|
|
console.warn(errorMsg)
|
|
return false
|
|
}
|
|
return fn.apply(this, args)
|
|
}
|
|
}
|