jdcProject_front/src/plugins/permission-directive.ts

26 lines
850 B
TypeScript
Raw Normal View History

import type { App, Directive } from "vue"
import { useUserStore } from "@/pinia/stores/user"
import { isArray } from "@@/utils/validate"
/**
* @name
* @description checkPermission
*/
const permission: Directive = {
mounted(el, binding) {
const { value: permissionRoles } = binding
const { roles } = useUserStore()
2024-11-21 19:53:33 +08:00
if (isArray(permissionRoles) && permissionRoles.length > 0) {
2024-11-18 19:40:44 +08:00
const hasPermission = roles.some(role => permissionRoles.includes(role))
// hasPermission || (el.style.display = "none") // 隐藏
hasPermission || el.parentNode?.removeChild(el) // 销毁
} else {
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
}
}
}
export function installPermissionDirective(app: App) {
app.directive("permission", permission)
}