factory_mp/utils/auth.js

73 lines
1.5 KiB
JavaScript

/**
* 权限管理类
*/
class AuthManager {
constructor() {
this.permissions = uni.getStorageSync('userPermissions') || []
}
/**
* 设置用户权限
* @param {Array} permissions - 权限数组
*/
setPermissions(permissions) {
this.permissions = permissions
uni.setStorageSync('userPermissions', permissions)
console.log('权限已设置:', permissions)
}
/**
* 清除权限
*/
clearPermissions() {
this.permissions = []
uni.removeStorageSync('userPermissions')
}
/**
* 检查权限
* @param {string|Array} permission - 单个权限或权限数组
* @returns {boolean}
*/
check(permission) {
if (!permission) return true
// 如果是数组,检查是否有任一权限
if (Array.isArray(permission)) {
return permission.some(p => this.hasPermission(p))
}
// 单个权限检查
return this.hasPermission(permission)
}
/**
* 检查所有权限
* @param {Array} permissions - 权限数组
* @returns {boolean}
*/
checkAll(permissions) {
if (!Array.isArray(permissions)) return false
return permissions.every(p => this.hasPermission(p))
}
/**
* 内部权限检查方法
* @param {string} permission
* @returns {boolean}
*/
hasPermission(permission) {
return this.permissions.includes(permission)
}
/**
* 获取当前权限列表
* @returns {Array}
*/
getPermissions() {
return [...this.permissions]
}
}
// 创建单例实例
export const auth = new AuthManager()