Ver código fonte

fix(auth): sync permissions to user store

Developer 2 semanas atrás
pai
commit
7f370ded59
3 arquivos alterados com 7 adições e 1 exclusões
  1. BIN
      dist.zip
  2. 3 1
      src/store_v3/modules/user.js
  3. 4 0
      src/views/main.vue

BIN
dist.zip


+ 3 - 1
src/store_v3/modules/user.js

@@ -39,10 +39,12 @@ const useUserStore = defineStore(
 
             if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
               this.roles = res.data.roles
-              this.permissions = res.data.permissions
             } else {
               this.roles = ['ROLE_DEFAULT']
             }
+            if (Array.isArray(res.data.permissions)) {
+              this.permissions = res.data.permissions
+            }
             this.id = user.userId
             this.name = user.userName
             this.avatar = avatar

+ 4 - 0
src/views/main.vue

@@ -24,6 +24,7 @@
 import MainNavbar from "./main-navbar";
 import MainSidebar from "./main-sidebar";
 import MainContent from "./main-content";
+import useUserStore from "@/store_v3/modules/user";
 
 import debounce from "lodash/debounce";
 export default {
@@ -180,6 +181,9 @@ export default {
             return this.$message.error(res.msg);
           }
           window.SITE_CONFIG["permissions"] = res.data;
+          // Keep the reactive Pinia permission state in sync with the legacy global config.
+          // v-hasPermi reads from this store, so updating only SITE_CONFIG leaves buttons hidden.
+          useUserStore().permissions = res.data;
         })
         .catch(() => {});
     },