diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java index 86be2127..f09c9cb5 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java @@ -224,4 +224,9 @@ public class UserController { return R.ok(); } + @GetMapping("/synchronousAuthenticationUser") + public R synchronousAuthenticationUser() { + return R.ok(SecurityUtils.getUser()); + } + } diff --git a/kicc-ui/src/api/platform/core/entity/user.ts b/kicc-ui/src/api/platform/core/entity/user.ts index 335e6329..144d8927 100644 --- a/kicc-ui/src/api/platform/core/entity/user.ts +++ b/kicc-ui/src/api/platform/core/entity/user.ts @@ -35,7 +35,7 @@ export interface User extends CommonEntity { id: string; // 用户名 userName: string; - // 真实名字 + // 昵称 nickName: string; // 头像 avatar: string; diff --git a/kicc-ui/src/api/platform/system/controller/user.ts b/kicc-ui/src/api/platform/system/controller/user.ts index 46c35cd1..d4aa8e4d 100644 --- a/kicc-ui/src/api/platform/system/controller/user.ts +++ b/kicc-ui/src/api/platform/system/controller/user.ts @@ -7,6 +7,7 @@ import type { UserParams, UserResult } from '/@/api/platform/system/entity/user' import type { User } from '/@/api/platform/core/entity/user'; import type { ResultVo } from '/@/api/common/base/entity'; import { defHttp } from '/@/utils/http/axios'; +import { KiccUser } from '/@/api/common/base/entity'; enum Api { list = '/system_proxy/system/user/list', @@ -18,7 +19,8 @@ enum Api { resetPwd='/system_proxy/system/user/resetPwd', changeStatus='/system_proxy/system/user/changeStatus', changeTenant='/system_proxy/system/user/changeTenant', - resetTenant='/system_proxy/system/user/resetTenant' + resetTenant='/system_proxy/system/user/resetTenant', + synchronousAuthenticationUser = '/system_proxy/system/user/synchronousAuthenticationUser' } /** 查询用户列表 */ @@ -50,3 +52,6 @@ export const changeTenant = (tenantIds: string[]) => defHttp.get({ url: `${Api.c /** 还原用户多租户 */ export const resetTenant = () => defHttp.get({ url: Api.resetTenant }); + +/** 同步身份验证用户 */ +export const synchronousAuthenticationUser = () => defHttp.get({ url: Api.synchronousAuthenticationUser }); diff --git a/kicc-ui/src/router/guard/index.ts b/kicc-ui/src/router/guard/index.ts index bbb01ebe..38445763 100644 --- a/kicc-ui/src/router/guard/index.ts +++ b/kicc-ui/src/router/guard/index.ts @@ -18,6 +18,9 @@ import { createPermissionGuard } from './permissionGuard'; import { createStateGuard } from './stateGuard'; import nProgress from 'nprogress'; import projectSetting from '/@/settings/projectSetting'; +import { User } from '/@/api/platform/core/entity/user'; +import { synchronousAuthenticationUser } from '/@/api/platform/system/controller/user'; +import { isEmpty } from '/@/utils/is'; /** 不要改变创建的顺序 */ export function setupRouterGuard(router: Router) { @@ -26,6 +29,7 @@ export function setupRouterGuard(router: Router) { createHttpGuard(router); createScrollGuard(router); createMessageGuard(router); + createSynchronousAuthenticationUserGuard(router); createProgressGuard(router); createPermissionGuard(router); createStateGuard(router); @@ -112,6 +116,33 @@ export function createMessageGuard(router: Router) { }); } +/** 处理刷新实时同步身份验证用户 */ +export function createSynchronousAuthenticationUserGuard(router: Router) { + const userStore = useUserStoreWithOut(); + router.beforeEach(async (to) => { + const token = userStore.getAccessToken; + const userInfo = userStore.getUserInfo; + if (token && !isEmpty(userInfo)) { + const kiccUser = await synchronousAuthenticationUser(); + // 同步当前身份验证用户到用户信息中 + Object.assign(userInfo, { + id: kiccUser.id, + phone: kiccUser.phone, + userName: kiccUser.username, + tenantId: kiccUser.tenantId, + tenantIds: String(kiccUser.tenantId).split(','), + enabled: kiccUser.enabled, + accountNonLocked: kiccUser.accountNonLocked, + accountNonExpired: kiccUser.accountNonExpired, + credentialsNonExpired: kiccUser.credentialsNonExpired + } as User); + userStore.setUserInfo(userInfo); + } + return true; + }); +} + + /** 处理发送请求时显示请求进度条 */ export function createProgressGuard(router: Router) { const { getOpenNProgress } = useTransitionSetting();