Browse Source

build: 按钮权限(备用)

chaooo 2 năm trước cách đây
mục cha
commit
8b6f4a5676
1 tập tin đã thay đổi với 12 bổ sung11 xóa
  1. 12 11
      src/directive/permission/index.ts

+ 12 - 11
src/directive/permission/index.ts

@@ -1,5 +1,5 @@
-import { useUserStoreHook } from '@/store/modules/user';
-import { Directive, DirectiveBinding } from 'vue';
+import { useUserStoreHook } from "@/store/modules/user";
+import { Directive, DirectiveBinding } from "vue";
 
 /**
  * 按钮权限
@@ -7,8 +7,8 @@ import { Directive, DirectiveBinding } from 'vue';
 export const hasPerm: Directive = {
   mounted(el: HTMLElement, binding: DirectiveBinding) {
     // 「超级管理员」拥有所有的按钮权限
-    const { roles, perms } = useUserStoreHook();
-    if (roles.includes('ROOT')) {
+    const { role, perms } = useUserStoreHook();
+    if (role == "ROOT") {
       return true;
     }
     // 「其他角色」按钮权限校验
@@ -16,7 +16,7 @@ export const hasPerm: Directive = {
     if (value) {
       const requiredPerms = value; // DOM绑定需要的按钮权限标识
 
-      const hasPerm = perms?.some(perm => {
+      const hasPerm = perms?.some((perm) => {
         return requiredPerms.includes(perm);
       });
 
@@ -28,7 +28,7 @@ export const hasPerm: Directive = {
         "need perms! Like v-has-perm=\"['sys:user:add','sys:user:edit']\""
       );
     }
-  }
+  },
 };
 
 /**
@@ -40,10 +40,11 @@ export const hasRole: Directive = {
 
     if (value) {
       const requiredRoles = value; // DOM绑定需要的角色编码
-      const { roles } = useUserStoreHook();
-      const hasRole = roles.some(perm => {
-        return requiredRoles.includes(perm);
-      });
+      const { role } = useUserStoreHook();
+      // const hasRole = roles.some(perm => {
+      //   return requiredRoles.includes(perm);
+      // });
+      const hasRole = requiredRoles.includes(role);
 
       if (!hasRole) {
         el.parentNode && el.parentNode.removeChild(el);
@@ -51,5 +52,5 @@ export const hasRole: Directive = {
     } else {
       throw new Error("need roles! Like v-has-role=\"['admin','test']\"");
     }
-  }
+  },
 };