refactor(系统设置): 优化权限体验,刷新页面就可获得最新权限
--bug=1014129 --user=刘瑞斌 【系统设置】用户只有工作空间权限时,添加项目权限需要重新登录后才生效 https://www.tapd.cn/55049933/s/1185866
This commit is contained in:
parent
102a981b7b
commit
9e638688b8
|
@ -44,6 +44,7 @@ public class LoginController {
|
|||
if (StringUtils.isBlank(user.getLanguage())) {
|
||||
user.setLanguage(LocaleContextHolder.getLocale().toString());
|
||||
}
|
||||
userService.autoSwitch(user);
|
||||
SessionUser sessionUser = SessionUser.fromUser(user);
|
||||
SessionUtils.putUser(sessionUser);
|
||||
return ResultHolder.success(sessionUser);
|
||||
|
|
|
@ -612,7 +612,10 @@ public class UserService {
|
|||
if (subject.isAuthenticated()) {
|
||||
UserDTO user = (UserDTO) subject.getSession().getAttribute(ATTR_USER);
|
||||
autoSwitch(user);
|
||||
return ResultHolder.success(subject.getSession().getAttribute("user"));
|
||||
// 放入session中
|
||||
SessionUser sessionUser = SessionUser.fromUser(user);
|
||||
SessionUtils.putUser(sessionUser);
|
||||
return ResultHolder.success(sessionUser);
|
||||
} else {
|
||||
return ResultHolder.error(Translator.get("login_fail"));
|
||||
}
|
||||
|
@ -631,7 +634,7 @@ public class UserService {
|
|||
}
|
||||
}
|
||||
|
||||
private void autoSwitch(UserDTO user) {
|
||||
public void autoSwitch(UserDTO user) {
|
||||
// 用户有 last_project_id 权限
|
||||
if (hasLastProjectPermission(user)) {
|
||||
return;
|
||||
|
@ -668,7 +671,6 @@ public class UserService {
|
|||
user.setLastWorkspaceId("");
|
||||
user.setLastProjectId("");
|
||||
updateUser(user);
|
||||
SessionUtils.putUser(SessionUser.fromUser(user));
|
||||
}
|
||||
} else {
|
||||
UserGroup userGroup = project.stream().filter(p -> StringUtils.isNotBlank(p.getSourceId()))
|
||||
|
@ -680,7 +682,6 @@ public class UserService {
|
|||
user.setLastProjectId(projectId);
|
||||
user.setLastWorkspaceId(wsId);
|
||||
updateUser(user);
|
||||
SessionUtils.putUser(SessionUser.fromUser(user));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -697,7 +698,6 @@ public class UserService {
|
|||
// last_project_id 和 last_workspace_id 对应不上了
|
||||
user.setLastWorkspaceId(project.getWorkspaceId());
|
||||
updateUser(user);
|
||||
SessionUtils.putUser(SessionUser.fromUser(user));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -744,7 +744,6 @@ public class UserService {
|
|||
user.setLastProjectId(project.getId());
|
||||
user.setLastWorkspaceId(wsId);
|
||||
updateUser(user);
|
||||
SessionUtils.putUser(SessionUser.fromUser(user));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,12 +122,30 @@ export function enableModules(...modules) {
|
|||
|
||||
export function saveLocalStorage(response) {
|
||||
// 登录信息保存 cookie
|
||||
localStorage.setItem(TokenKey, JSON.stringify(response.data));
|
||||
if (!sessionStorage.getItem(PROJECT_ID)) {
|
||||
sessionStorage.setItem(PROJECT_ID, response.data.lastProjectId);
|
||||
let user = response.data;
|
||||
localStorage.setItem(TokenKey, JSON.stringify(user));
|
||||
// 校验权限
|
||||
user.userGroups.forEach(ug => {
|
||||
user.groupPermissions.forEach(gp => {
|
||||
if (gp.group.id === ug.groupId) {
|
||||
ug.userGroupPermissions = gp.userGroupPermissions;
|
||||
ug.group = gp.group;
|
||||
}
|
||||
});
|
||||
});
|
||||
// 检查当前项目有没有权限
|
||||
let currentProjectId = sessionStorage.getItem(PROJECT_ID);
|
||||
if (!currentProjectId) {
|
||||
sessionStorage.setItem(PROJECT_ID, user.lastProjectId);
|
||||
} else {
|
||||
let v = user.userGroups.filter(ug => ug.group && ug.group.type === 'PROJECT')
|
||||
.filter(ug => ug.sourceId === currentProjectId);
|
||||
if (v.length === 0) {
|
||||
sessionStorage.setItem(PROJECT_ID, user.lastProjectId);
|
||||
}
|
||||
}
|
||||
if (!sessionStorage.getItem(WORKSPACE_ID)) {
|
||||
sessionStorage.setItem(WORKSPACE_ID, response.data.lastWorkspaceId);
|
||||
sessionStorage.setItem(WORKSPACE_ID, user.lastWorkspaceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -491,7 +509,7 @@ export function getTranslateOptions(data) {
|
|||
let options = [];
|
||||
data.forEach(i => {
|
||||
let option = {};
|
||||
Object.assign(option, i)
|
||||
Object.assign(option, i);
|
||||
option.text = i18n.t(option.text);
|
||||
options.push(option);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue