mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 07:28:37 +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 avatar1 from '@images/avatars/avatar-1.png'
|
||||||
import { useToast } from 'vue-toast-notification'
|
import { useToast } from 'vue-toast-notification'
|
||||||
import { useConfirm } from 'vuetify-use-dialog'
|
import { useConfirm } from 'vuetify-use-dialog'
|
||||||
import { hasPermission } from '@/@core/utils/permission'
|
|
||||||
import UserAddEditDialog from '@/components/dialog/UserAddEditDialog.vue'
|
import UserAddEditDialog from '@/components/dialog/UserAddEditDialog.vue'
|
||||||
|
|
||||||
// 定义输入变量
|
// 定义输入变量
|
||||||
@@ -87,8 +86,8 @@ function editUser() {
|
|||||||
|
|
||||||
// 计算是否有用户编辑权限
|
// 计算是否有用户编辑权限
|
||||||
const canEditUser = computed(() => {
|
const canEditUser = computed(() => {
|
||||||
if (store.state.auth.superUser) return true
|
if (store.state.auth.superUser && props.user.name !== currentLoginUser) return true
|
||||||
return hasPermission('admin') || hasPermission('usermanage')
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
// 计算是否有用户管理权限
|
// 计算是否有用户管理权限
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import store from '@/store'
|
|||||||
import { SystemNavMenus } from '@/router/menu'
|
import { SystemNavMenus } from '@/router/menu'
|
||||||
import { NavMenu } from '@/@layouts/types'
|
import { NavMenu } from '@/@layouts/types'
|
||||||
import { useDisplay } from 'vuetify'
|
import { useDisplay } from 'vuetify'
|
||||||
import { hasPermission } from '@/@core/utils/permission'
|
|
||||||
|
|
||||||
const display = useDisplay()
|
const display = useDisplay()
|
||||||
const appMode = computed(() => {
|
const appMode = computed(() => {
|
||||||
@@ -39,9 +38,7 @@ const systemMenus = ref<NavMenu[]>([])
|
|||||||
|
|
||||||
// 根据分类获取菜单列表
|
// 根据分类获取菜单列表
|
||||||
const getMenuList = (header: string) => {
|
const getMenuList = (header: string) => {
|
||||||
return SystemNavMenus.filter(
|
return SystemNavMenus.filter((item: NavMenu) => item.header === header && superUser)
|
||||||
(item: NavMenu) => item.header === header && (superUser || hasPermission(item.permission)),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回上一页
|
// 返回上一页
|
||||||
|
|||||||
+1
-23
@@ -28,29 +28,7 @@ const authModule: Module<AuthState, RootState> = {
|
|||||||
avatar: '', // 头像
|
avatar: '', // 头像
|
||||||
originalPath: null, // 原始路径
|
originalPath: null, // 原始路径
|
||||||
level: 1, // 用户认证等级 1-未认证 2-已认证
|
level: 1, // 用户认证等级 1-未认证 2-已认证
|
||||||
permissions: {
|
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, // 管理正在下载任务
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
setToken(state, token: string) {
|
setToken(state, token: string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user