diff --git a/backend/src/main/java/io/metersphere/controller/LoginController.java b/backend/src/main/java/io/metersphere/controller/LoginController.java index 11da340770abcedf57352d2bce566f03c020ad5d..48f621dcc9325893673661f4f9580777b59bd28b 100644 --- a/backend/src/main/java/io/metersphere/controller/LoginController.java +++ b/backend/src/main/java/io/metersphere/controller/LoginController.java @@ -1,19 +1,27 @@ package io.metersphere.controller; +import io.metersphere.base.domain.UserRole; import io.metersphere.controller.request.LoginRequest; +import io.metersphere.dto.UserDTO; import io.metersphere.i18n.Translator; -import io.metersphere.user.SessionUtils; +import io.metersphere.service.UserService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org.apache.shiro.authz.UnauthorizedException; import org.apache.shiro.subject.Subject; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; @RestController @RequestMapping public class LoginController { + @Resource + private UserService userService; + @GetMapping(value = "/isLogin") public ResultHolder isLogin() { if (SecurityUtils.getSubject().isAuthenticated()) { @@ -37,6 +45,20 @@ public class LoginController { try { subject.login(token); if (subject.isAuthenticated()) { + UserDTO user = (UserDTO) subject.getSession().getAttribute("user"); + // 自动选中组织,工作空间 + if (StringUtils.isBlank(user.getLastOrganizationId())) { + List userRoles = user.getUserRoles(); + List test = userRoles.stream().filter(ur -> ur.getRoleId().indexOf("test") > -1).collect(Collectors.toList()); + List org = userRoles.stream().filter(ur -> ur.getRoleId().indexOf("org") > -1).collect(Collectors.toList()); + if (test.size() > 0) { + String wsId = test.get(0).getSourceId(); + userService.switchUserRole(user, "workspace", wsId); + } else if (org.size() > 0) { + String orgId = org.get(0).getSourceId(); + userService.switchUserRole(user, "organization", orgId); + } + } // 返回 userDTO return ResultHolder.success(subject.getSession().getAttribute("user")); } else {