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`,
},