Browse Source

👈 重构安全框架底层代码支持当前用户修改

master
wangxiang 3 years ago
parent
commit
d3320038dc
  1. 5
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  2. 2
      kicc-ui/src/api/platform/core/entity/user.ts
  3. 7
      kicc-ui/src/api/platform/system/controller/user.ts
  4. 31
      kicc-ui/src/router/guard/index.ts

5
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(); return R.ok();
} }
@GetMapping("/synchronousAuthenticationUser")
public R synchronousAuthenticationUser() {
return R.ok(SecurityUtils.getUser());
}
} }

2
kicc-ui/src/api/platform/core/entity/user.ts

@ -35,7 +35,7 @@ export interface User extends CommonEntity {
id: string; id: string;
// 用户名 // 用户名
userName: string; userName: string;
// 真实名字 // 昵称
nickName: string; nickName: string;
// 头像 // 头像
avatar: string; avatar: string;

7
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 { User } from '/@/api/platform/core/entity/user';
import type { ResultVo } from '/@/api/common/base/entity'; import type { ResultVo } from '/@/api/common/base/entity';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { KiccUser } from '/@/api/common/base/entity';
enum Api { enum Api {
list = '/system_proxy/system/user/list', list = '/system_proxy/system/user/list',
@ -18,7 +19,8 @@ enum Api {
resetPwd='/system_proxy/system/user/resetPwd', resetPwd='/system_proxy/system/user/resetPwd',
changeStatus='/system_proxy/system/user/changeStatus', changeStatus='/system_proxy/system/user/changeStatus',
changeTenant='/system_proxy/system/user/changeTenant', 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 resetTenant = () => defHttp.get({ url: Api.resetTenant });
/** 同步身份验证用户 */
export const synchronousAuthenticationUser = () => defHttp.get<KiccUser>({ url: Api.synchronousAuthenticationUser });

31
kicc-ui/src/router/guard/index.ts

@ -18,6 +18,9 @@ import { createPermissionGuard } from './permissionGuard';
import { createStateGuard } from './stateGuard'; import { createStateGuard } from './stateGuard';
import nProgress from 'nprogress'; import nProgress from 'nprogress';
import projectSetting from '/@/settings/projectSetting'; 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) { export function setupRouterGuard(router: Router) {
@ -26,6 +29,7 @@ export function setupRouterGuard(router: Router) {
createHttpGuard(router); createHttpGuard(router);
createScrollGuard(router); createScrollGuard(router);
createMessageGuard(router); createMessageGuard(router);
createSynchronousAuthenticationUserGuard(router);
createProgressGuard(router); createProgressGuard(router);
createPermissionGuard(router); createPermissionGuard(router);
createStateGuard(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) { export function createProgressGuard(router: Router) {
const { getOpenNProgress } = useTransitionSetting(); const { getOpenNProgress } = useTransitionSetting();

Loading…
Cancel
Save