36 lines
762 B
JavaScript
36 lines
762 B
JavaScript
import { auth } from '@/utils/auth.js'
|
|
|
|
/**
|
|
* 权限指令
|
|
* 使用方式:
|
|
* v-auth="'user:add'" // 单个权限
|
|
* v-auth="['user:add', 'user:edit']" // 多个权限(满足其一即可)
|
|
*/
|
|
export const authDirective = {
|
|
mounted(el, binding) {
|
|
checkAuth(el, binding)
|
|
},
|
|
updated(el, binding) {
|
|
checkAuth(el, binding)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 权限检查逻辑
|
|
*/
|
|
function checkAuth(el, binding) {
|
|
const hasAuth = auth.check(binding.value)
|
|
|
|
if (!hasAuth) {
|
|
// 没有权限时隐藏元素
|
|
el.style.display = 'none'
|
|
|
|
// 或者完全移除元素(根据需求选择)
|
|
// if (el.parentNode) {
|
|
// el.parentNode.removeChild(el)
|
|
// }
|
|
} else {
|
|
// 有权限时确保显示
|
|
el.style.display = ''
|
|
}
|
|
} |