jdcProject_front/src/plugins/permission-directive.ts

25 lines
815 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
if (isArray(permissionRoles) && permissionRoles.length > 0) {
const hasPermission = roles.some(role => permissionRoles.includes(role))
hasPermission || el.parentNode?.removeChild(el)
} else {
throw new Error(`参数必须是一个数组且长度大于 0参考v-permission="['admin','editor']"`)
}
}
}
export function installPermissionDirective(app: App) {
app.directive("permission", permission)
}