自定义指令控制权限

文章介绍了如何在Vue应用中创建一个基于PiniaStore的自定义指令,用于检测元素是否具有特定的角色或权限,如果不符合则从DOM中移除。指令适用于菜单和组件中的权限控制。
摘要由CSDN通过智能技术生成

1.新建directives auth.ts

2.完整的auth.ts

import { wmsStore } from "@/store/pinia";

//判断是否有某个角色的函数
function hasRoles(role: any) {
    const pinaRoles = wmsStore().roles;
    if (typeof role === 'string') {
        return pinaRoles.includes(role)
    } else if (Array.isArray(role)) {
        return pinaRoles.some(item => role.includes(item))
    } else {
        return false
    }
}
//判断是否有某个权限的角色
function hasPermissions(permissions: any) {
    const pinaPermissions = wmsStore().permissions;
    if (typeof permissions === 'string') {
        return pinaPermissions.includes(permissions)
    } else if (Array.isArray(permissions)) {
        return pinaPermissions.some(item => permissions.includes(item))
    } else {
        return false
    }
}

//创建自定义指令
export default {
  mounted(el: HTMLElement, binding: any) {
    const type = binding.arg;
    if (type === "role") {
      if (!hasRoles(binding.value)) {
        el.remove();
      }
    }else{
        if (!hasPermissions(binding.value)) {
            el.remove();
          } 
    }
  },
};

3.在main.ts中引入使用

4.在其他组件中使用

4.1菜单中

4.2其他组件中

 

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值