Browse Source

fix🐛: 修复权限功能

gitboyzcf 1 month ago
parent
commit
58718cce79
2 changed files with 11 additions and 17 deletions
  1. 5 15
      src/directives/modules/auth.js
  2. 6 2
      src/utils/index.js

+ 5 - 15
src/directives/modules/auth.js

@@ -5,27 +5,17 @@
  * @E-mail boyzcf@qq.com
  */
 
-import { useOutsideSystemStore } from '@/stores/modules/system.js'
-const useSystem = useOutsideSystemStore()
+import { hasPermission } from '@/utils'
 
 export default {
   mounted(el, { value }) {
-    // 获取用户的所有权限列表
     if (Array.isArray(value)) {
       if (!value.length) return
-      watch(
-        () => useSystem.permissions,
-        (permissions) => {
-          // 检查是否有任意一个权限匹配
-          const hasPermission = value.some((permission) => permissions.includes(permission))
 
-          // 如果没有权限,则移除元素
-          if (!hasPermission) {
-            el.parentNode?.removeChild(el)
-          }
-        },
-        { immediate: true }
-      )
+      // 如果没有权限,则移除元素
+      if (!hasPermission(value)) {
+        el.parentNode?.removeChild(el)
+      }
     } else {
       console.error(new Error('v-auth自定义指令需要传入数组!!!'))
     }

+ 6 - 2
src/utils/index.js

@@ -1,6 +1,7 @@
 import mitt from 'mitt'
 import { v4 as uuidv4 } from 'uuid'
 import { createDiscreteApi } from 'naive-ui'
+import { useOutsideSystemStore } from '@/stores/modules/system.js'
 
 const { message, dialog } = createDiscreteApi(['message', 'dialog'], {
   messageProviderProps: { duration: 2000 }
@@ -97,8 +98,11 @@ function getCorrectMousePosition(event, container) {
 }
 const getAutofitScale = () => document.body.style.transform.split('(')[2].split(')')[0]
 
-const hasPermission = (value, permissions) =>
-  value.some((permission) => permissions.includes(permission))
+const hasPermission = (value) => {
+  const useSystem = useOutsideSystemStore()
+  const permissions = useSystem.permissions || []
+  return value.some((permission) => permissions.includes(permission))
+}
 
 export {
   getStaticResource,