perf: 代码优化 utils/permission 和 directives/permission
This commit is contained in:
parent
8520fd3df2
commit
4c08e5f190
@ -1,20 +1,15 @@
|
||||
import { type Directive } from "vue"
|
||||
import { useUserStoreHook } from "@/store/modules/user"
|
||||
|
||||
/** 权限指令 */
|
||||
/** 权限指令,和权限判断函数 checkPermission 功能类似 */
|
||||
export const permission: Directive = {
|
||||
mounted(el, binding) {
|
||||
const { value } = binding
|
||||
const { value: permissionRoles } = binding
|
||||
const { roles } = useUserStoreHook()
|
||||
if (Array.isArray(value) && value.length > 0) {
|
||||
const permissionRoles = value
|
||||
if (Array.isArray(permissionRoles) && permissionRoles.length > 0) {
|
||||
const hasPermission = roles.some((role) => permissionRoles.includes(role))
|
||||
if (!hasPermission) {
|
||||
// 隐藏
|
||||
// el.style.display = "none"
|
||||
// 销毁
|
||||
el.parentNode?.removeChild(el)
|
||||
}
|
||||
// hasPermission || (el.style.display = "none") // 隐藏
|
||||
hasPermission || el.parentNode?.removeChild(el) // 销毁
|
||||
} else {
|
||||
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
|
||||
}
|
||||
|
@ -1,13 +1,10 @@
|
||||
import { useUserStoreHook } from "@/store/modules/user"
|
||||
|
||||
/** 全局权限判断函数,和指令 v-permission 功能类似 */
|
||||
export const checkPermission = (value: string[]): boolean => {
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const roles = useUserStoreHook().roles
|
||||
const permissionRoles = value
|
||||
return roles.some((role) => {
|
||||
return permissionRoles.includes(role)
|
||||
})
|
||||
/** 全局权限判断函数,和权限指令 v-permission 功能类似 */
|
||||
export const checkPermission = (permissionRoles: string[]): boolean => {
|
||||
if (Array.isArray(permissionRoles) && permissionRoles.length > 0) {
|
||||
const { roles } = useUserStoreHook()
|
||||
return roles.some((role) => permissionRoles.includes(role))
|
||||
} else {
|
||||
console.error("need roles! Like checkPermission(['admin','editor'])")
|
||||
return false
|
||||
|
Loading…
x
Reference in New Issue
Block a user