This is an automated email from the ASF dual-hosted git repository.

achao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new d65062ef [type:feat] support filter permissions by namespace (#490)
d65062ef is described below

commit d65062ef6c433dcce938ab673f06bb979146505d
Author: aias00 <[email protected]>
AuthorDate: Mon Nov 4 16:01:34 2024 +0800

    [type:feat] support filter permissions by namespace (#490)
    
    * [type:feat] support namespace  permission
    
    * [type:fear] support namespace filtered permissions
---
 src/components/GlobalHeader/index.js | 18 ++++++++++++------
 src/models/global.js                 |  8 ++++++--
 src/services/api.js                  | 12 +++++++++++-
 3 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/components/GlobalHeader/index.js 
b/src/components/GlobalHeader/index.js
index 60077e43..d0046979 100644
--- a/src/components/GlobalHeader/index.js
+++ b/src/components/GlobalHeader/index.js
@@ -34,6 +34,7 @@ import styles from "./index.less";
 import { getCurrentLocale, getIntlContent } from "../../utils/IntlUtils";
 import { checkUserPassword } from "../../services/api";
 import { emit } from "../../utils/emit";
+import { resetAuthMenuCache } from "../../utils/AuthRoute";
 
 const TranslationOutlinedSvg = () => (
   <svg
@@ -158,6 +159,16 @@ class GlobalHeader extends PureComponent {
 
   handleNamespacesValueChange = (value) => {
     const { dispatch } = this.props;
+    const namespaceId = value?.key || "649330b6-c2d7-4edc-be8e-8a54df9eb385";
+    window.sessionStorage.setItem("currentNamespaceId", namespaceId);
+    dispatch({
+      type: "global/fetchPermission",
+      payload: {
+        callback: () => {
+          resetAuthMenuCache();
+        },
+      },
+    });
     dispatch({
       type: "global/saveCurrentNamespaceId",
       payload: value.key,
@@ -308,12 +319,7 @@ class GlobalHeader extends PureComponent {
                     style={{ fontWeight: "bold" }}
                     onClick={(e) => e.preventDefault()}
                   >
-                    {`${getIntlContent("SHENYU.SYSTEM.NAMESPACE")} / ${
-                      namespaces.find(
-                        (namespace) =>
-                          currentNamespaceId === namespace.namespaceId,
-                      )?.name
-                    } `}
+                    {`${getIntlContent("SHENYU.SYSTEM.NAMESPACE")} / 
${namespaces.find((namespace) => currentNamespaceId === 
namespace.namespaceId)?.name} `}
                   </a>
                   <Icon type="down" />
                 </Button>
diff --git a/src/models/global.js b/src/models/global.js
index 0fbec4c9..64874d56 100644
--- a/src/models/global.js
+++ b/src/models/global.js
@@ -57,6 +57,9 @@ export default {
           type: "saveNamespaces",
           payload: json.data,
         });
+        const namespaceId =
+          json.data[0]?.namespaceId || "649330b6-c2d7-4edc-be8e-8a54df9eb385";
+        window.sessionStorage.setItem("currentNamespaceId", namespaceId);
       }
     },
     *fetchPlugins({ payload }, { call, put }) {
@@ -93,8 +96,9 @@ export default {
       const { callback } = payload;
       let permissions = { menu: [], button: [] };
       const token = window.sessionStorage.getItem("token");
-      if (token) {
-        const params = { token };
+      const namespaceId = window.sessionStorage.getItem("currentNamespaceId");
+      if (namespaceId) {
+        const params = { token, namespaceId };
         const json = yield call(getUserPermissionByToken, params);
         if (json.code === 200) {
           let { menu, currentAuth } = json.data;
diff --git a/src/services/api.js b/src/services/api.js
index 9fbc86a6..b3723708 100644
--- a/src/services/api.js
+++ b/src/services/api.js
@@ -807,7 +807,17 @@ export async function getMenuTree() {
 // get userPermission by token
 export async function getUserPermissionByToken(params) {
   return request(
-    `${baseUrl}/permission/getUserPermissionByToken?token=${params.token}`,
+    
`${baseUrl}/permission/getUserPermissionByToken?token=${params.token}&namespaceId=${params.namespaceId}`,
+    {
+      method: `GET`,
+    },
+  );
+}
+
+// get userPermission
+export async function getUserPermission(params) {
+  return request(
+    
`${baseUrl}/permission/getUserPermissionByToken?namespaceId=${params.namespaceId}`,
     {
       method: `GET`,
     },

Reply via email to