import { Directive, DirectiveBinding } from 'vue'
const checkPermission = (el: any, binding: DirectiveBinding) => {
const { value } = binding;
let allPermissions = ['super','admin'];
if (value && value instanceof Array) {
if (value.length > 0) {
const hasPermission = allPermissions.some(role => {
return value.includes(role)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
}
else {
throw new Error(`传入关于权限的数组,如 v-permission="['super','normal']"`)
}
}
}
const directive: Directive = {
mounted(el: any, binding: DirectiveBinding) {
checkPermission(el, binding)
},
updated(el: any, binding: DirectiveBinding) {
checkPermission(el, binding)
}
}
export default directive
import Permission from './permission';
export {
Permission
}
import * as directives from '@/directives'
const app = createApp(App)
Object.keys(directives).forEach(key => {
app.directive(key, (directives as { [key: string ]: Directive })[key])
})