Refactor permission utility function

This commit is contained in:
jxxghp
2024-10-18 14:24:16 +08:00
parent 2710cbc85a
commit fb510ff180
4 changed files with 4 additions and 49 deletions

View File

@@ -1,19 +0,0 @@
import store from '@/store'
// 检查是否有权限
export function hasPermission(permission: string | null = null) {
if (!permission) return true
// permission是一个以.分隔的字符串,例如:'user.create'
const permissionList = permission.split('.')
let permissions_obj = store.state.auth.permissions
for (const element of permissionList) {
if (!permissions_obj[element]) {
return false
} else if (typeof permissions_obj[element] === 'object') {
permissions_obj = permissions_obj[element]
} else {
return true
}
}
return false
}

View File

@@ -5,7 +5,6 @@ import store from '@/store'
import avatar1 from '@images/avatars/avatar-1.png'
import { useToast } from 'vue-toast-notification'
import { useConfirm } from 'vuetify-use-dialog'
import { hasPermission } from '@/@core/utils/permission'
import UserAddEditDialog from '@/components/dialog/UserAddEditDialog.vue'
// 定义输入变量
@@ -87,8 +86,8 @@ function editUser() {
// 计算是否有用户编辑权限
const canEditUser = computed(() => {
if (store.state.auth.superUser) return true
return hasPermission('admin') || hasPermission('usermanage')
if (store.state.auth.superUser && props.user.name !== currentLoginUser) return true
return false
})
// 计算是否有用户管理权限

View File

@@ -12,7 +12,6 @@ import store from '@/store'
import { SystemNavMenus } from '@/router/menu'
import { NavMenu } from '@/@layouts/types'
import { useDisplay } from 'vuetify'
import { hasPermission } from '@/@core/utils/permission'
const display = useDisplay()
const appMode = computed(() => {
@@ -39,9 +38,7 @@ const systemMenus = ref<NavMenu[]>([])
// 根据分类获取菜单列表
const getMenuList = (header: string) => {
return SystemNavMenus.filter(
(item: NavMenu) => item.header === header && (superUser || hasPermission(item.permission)),
)
return SystemNavMenus.filter((item: NavMenu) => item.header === header && superUser)
}
// 返回上一页

View File

@@ -28,29 +28,7 @@ const authModule: Module<AuthState, RootState> = {
avatar: '', // 头像
originalPath: null, // 原始路径
level: 1, // 用户认证等级 1-未认证 2-已认证
permissions: {
admin: false, // 管理员
usermanage: false, // 用户管理
dashboard: true, //仪表板
ranking: true, // 推荐榜单
resource: {
search: false, // 搜索站点资源
download: false, // 下载站点资源
},
subscribe: {
movie: true, // 查看电影订阅
tv: true, // 电视剧订阅
request: true, // 提交订阅请求
autopass: false, // 订阅请求自动批准
approve: false, // 审批订阅请求
calendar: true, // 查看订阅日历
manage: false, // 管理所有订阅
},
downloading: {
view: true, // 查看正在下载任务
manager: false, // 管理正在下载任务
},
},
permissions: {},
},
mutations: {
setToken(state, token: string) {