fix: 修复权限相关问题
This commit is contained in:
parent
7631cf31b5
commit
08afbf3cdc
|
@ -3,15 +3,16 @@ package io.metersphere.service;
|
||||||
import com.alibaba.excel.EasyExcelFactory;
|
import com.alibaba.excel.EasyExcelFactory;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.github.pagehelper.Page;
|
|
||||||
import com.github.pagehelper.PageHelper;
|
|
||||||
import io.metersphere.base.domain.*;
|
import io.metersphere.base.domain.*;
|
||||||
import io.metersphere.base.mapper.*;
|
import io.metersphere.base.mapper.*;
|
||||||
import io.metersphere.base.mapper.ext.*;
|
import io.metersphere.base.mapper.ext.*;
|
||||||
import io.metersphere.commons.constants.*;
|
import io.metersphere.commons.constants.*;
|
||||||
import io.metersphere.commons.exception.MSException;
|
import io.metersphere.commons.exception.MSException;
|
||||||
import io.metersphere.commons.user.SessionUser;
|
import io.metersphere.commons.user.SessionUser;
|
||||||
import io.metersphere.commons.utils.*;
|
import io.metersphere.commons.utils.CodingUtil;
|
||||||
|
import io.metersphere.commons.utils.CommonBeanFactory;
|
||||||
|
import io.metersphere.commons.utils.LogUtil;
|
||||||
|
import io.metersphere.commons.utils.SessionUtils;
|
||||||
import io.metersphere.controller.ResultHolder;
|
import io.metersphere.controller.ResultHolder;
|
||||||
import io.metersphere.controller.request.LoginRequest;
|
import io.metersphere.controller.request.LoginRequest;
|
||||||
import io.metersphere.controller.request.WorkspaceRequest;
|
import io.metersphere.controller.request.WorkspaceRequest;
|
||||||
|
@ -702,9 +703,11 @@ public class UserService {
|
||||||
ProjectExample example = new ProjectExample();
|
ProjectExample example = new ProjectExample();
|
||||||
example.createCriteria().andWorkspaceIdEqualTo(user.getLastWorkspaceId());
|
example.createCriteria().andWorkspaceIdEqualTo(user.getLastWorkspaceId());
|
||||||
List<Project> projects = projectMapper.selectByExample(example);
|
List<Project> projects = projectMapper.selectByExample(example);
|
||||||
|
// 工作空间下没有项目
|
||||||
if (CollectionUtils.isEmpty(projects)) {
|
if (CollectionUtils.isEmpty(projects)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// 工作空间下有项目,选中有权限的项目
|
||||||
List<String> projectIds = projects.stream()
|
List<String> projectIds = projects.stream()
|
||||||
.map(Project::getId)
|
.map(Project::getId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
@ -714,16 +717,21 @@ public class UserService {
|
||||||
.stream().filter(ug -> StringUtils.equals(ug.getType(), UserGroupType.PROJECT))
|
.stream().filter(ug -> StringUtils.equals(ug.getType(), UserGroupType.PROJECT))
|
||||||
.map(Group::getId)
|
.map(Group::getId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
String projectId = userGroups.stream().filter(ug -> projectGroupIds.contains(ug.getGroupId()))
|
List<String> projectIdsWithPermission = userGroups.stream().filter(ug -> projectGroupIds.contains(ug.getGroupId()))
|
||||||
.filter(p -> StringUtils.isNotBlank(p.getSourceId()))
|
.filter(p -> StringUtils.isNotBlank(p.getSourceId()))
|
||||||
.map(UserGroup::getSourceId)
|
.map(UserGroup::getSourceId)
|
||||||
.filter(projectIds::contains)
|
.filter(projectIds::contains)
|
||||||
.collect(Collectors.toList())
|
.collect(Collectors.toList());
|
||||||
.get(0);
|
|
||||||
Project project = projects.stream().filter(p -> StringUtils.equals(projectId, p.getId())).findFirst().get();
|
List<String> intersection = projectIds.stream().filter(projectIdsWithPermission::contains).collect(Collectors.toList());
|
||||||
|
// 当前工作空间下的所有项目都没有权限
|
||||||
|
if (CollectionUtils.isEmpty(intersection)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Project project = projects.stream().filter(p -> StringUtils.equals(intersection.get(0), p.getId())).findFirst().get();
|
||||||
String wsId = project.getWorkspaceId();
|
String wsId = project.getWorkspaceId();
|
||||||
user.setId(user.getId());
|
user.setId(user.getId());
|
||||||
user.setLastProjectId(projectId);
|
user.setLastProjectId(project.getId());
|
||||||
user.setLastWorkspaceId(wsId);
|
user.setLastWorkspaceId(wsId);
|
||||||
updateUser(user);
|
updateUser(user);
|
||||||
SessionUtils.putUser(SessionUser.fromUser(user));
|
SessionUtils.putUser(SessionUser.fromUser(user));
|
||||||
|
|
Loading…
Reference in New Issue