diff --git a/src/main/java/com/xuxd/kafka/console/controller/AuthController.java b/src/main/java/com/xuxd/kafka/console/controller/AuthController.java index f71e806..1f7c3e0 100644 --- a/src/main/java/com/xuxd/kafka/console/controller/AuthController.java +++ b/src/main/java/com/xuxd/kafka/console/controller/AuthController.java @@ -33,4 +33,9 @@ public class AuthController { public ResponseData login(@RequestBody LoginUserDTO userDTO) { return authService.login(userDTO); } + + @GetMapping("/own/data/auth") + public boolean ownDataAuthority() { + return authService.ownDataAuthority(); + } } diff --git a/src/main/java/com/xuxd/kafka/console/service/AuthService.java b/src/main/java/com/xuxd/kafka/console/service/AuthService.java index c437dc1..51ad85a 100644 --- a/src/main/java/com/xuxd/kafka/console/service/AuthService.java +++ b/src/main/java/com/xuxd/kafka/console/service/AuthService.java @@ -10,4 +10,6 @@ import com.xuxd.kafka.console.beans.dto.LoginUserDTO; public interface AuthService { ResponseData login(LoginUserDTO userDTO); + + boolean ownDataAuthority(); } diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/AuthServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/AuthServiceImpl.java index 5baafe4..5421130 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/AuthServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/AuthServiceImpl.java @@ -93,4 +93,16 @@ public class AuthServiceImpl implements AuthService { return ResponseData.create().data(loginResult).success(); } + @Override + public boolean ownDataAuthority() { + if (!authConfig.isEnable()) { + return true; + } + if (!authConfig.isEnableClusterAuthority()) { + return true; + } + + return false; + } + } diff --git a/ui/src/store/index.js b/ui/src/store/index.js index 1441759..936010d 100644 --- a/ui/src/store/index.js +++ b/ui/src/store/index.js @@ -6,6 +6,7 @@ import { setPermissions, setToken, setUsername, + deleteClusterInfo, } from "@/utils/local-cache"; Vue.use(Vuex); @@ -38,6 +39,9 @@ export default new Vuex.Store({ state.clusterInfo.enableSasl = enableSasl; setClusterInfo(clusterInfo); }, + [CLUSTER.DELETE]() { + deleteClusterInfo(); + }, [AUTH.ENABLE](state, enable) { state.auth.enable = enable; }, diff --git a/ui/src/store/mutation-types.js b/ui/src/store/mutation-types.js index f219f18..94a33c7 100644 --- a/ui/src/store/mutation-types.js +++ b/ui/src/store/mutation-types.js @@ -1,5 +1,6 @@ export const CLUSTER = { SWITCH: "switchCluster", + DELETE: "deleteClusterInfo", }; export const AUTH = { diff --git a/ui/src/utils/api.js b/ui/src/utils/api.js index 5e73ef4..dc164c8 100644 --- a/ui/src/utils/api.js +++ b/ui/src/utils/api.js @@ -365,6 +365,10 @@ export const AuthApi = { url: "/auth/login", method: "post", }, + ownDataAuthority: { + url: "/auth/own/data/auth", + method: "get", + }, }; export const ClusterRoleRelationApi = { diff --git a/ui/src/utils/local-cache.js b/ui/src/utils/local-cache.js index 80ae0f1..04713d8 100644 --- a/ui/src/utils/local-cache.js +++ b/ui/src/utils/local-cache.js @@ -4,6 +4,10 @@ export function setClusterInfo(clusterInfo) { localStorage.setItem(Cache.clusterInfo, JSON.stringify(clusterInfo)); } +export function deleteClusterInfo() { + localStorage.removeItem(Cache.clusterInfo); +} + export function getClusterInfo() { const str = localStorage.getItem(Cache.clusterInfo); return str ? JSON.parse(str) : undefined; diff --git a/ui/src/views/login/Login.vue b/ui/src/views/login/Login.vue index 7e06f7c..eae5a8f 100644 --- a/ui/src/views/login/Login.vue +++ b/ui/src/views/login/Login.vue @@ -46,7 +46,7 @@ import request from "@/utils/request"; import { AuthApi } from "@/utils/api"; import notification from "ant-design-vue/lib/notification"; import { mapMutations } from "vuex"; -import { AUTH } from "@/store/mutation-types"; +import { AUTH, CLUSTER } from "@/store/mutation-types"; export default { name: "Login", @@ -88,8 +88,19 @@ export default { setToken: AUTH.SET_TOKEN, setUsername: AUTH.SET_USERNAME, setPermissions: AUTH.SET_PERMISSIONS, + deleteClusterInfo: CLUSTER.DELETE, }), }, + created() { + request({ + url: AuthApi.ownDataAuthority.url, + method: AuthApi.ownDataAuthority.method, + }).then((res) => { + if (!res) { + this.deleteClusterInfo(); + } + }); + }, };