自定义权限指令
目录结构
|- src
|-- directive
|— permission
|---- permission.js
|---- index.js
// permission.js
function checkPermission(el, binding) {
const { value } = binding
const roles = JSON.parse(localStorage.getItem('roles'))
const appRole = sessionStorage.getItem('appRole')
if (value && value instanceof Array) {
if (value.length > 0) {
const permissionRoles = value
const hasPermission = roles.some(role => {
return permissionRoles.includes(role.rolename) || permissionRoles.includes(appRole)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
}
} else {
throw new Error(`need roles! Like v-has="['TenantAdmin','CmAdmin']"`)
}
}
export default {
inserted(el, binding) {
checkPermission(el, binding)
},
update(el, binding) {
checkPermission(el, binding)
}
}
// index.js
import permission from './permission'
const install = function(Vue) {
Vue.directive('permission', permission)
}
if (window.Vue) {
window['permission'] = permission
Vue.use(install)
}
permission.install = install
export default permission