mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-31 05:10:45 +08:00
Refactor permission utility function
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
})
|
||||
|
||||
// 计算是否有用户管理权限
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
// 返回上一页
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user