Browse Source

fix:代理登录企业选择错误不出现选择企业问题

wangmh 7 years ago
parent
commit
6f5d194205

+ 26 - 1
sso-server/src/main/java/com/uas/sso/service/impl/LoginServiceImpl.java

@@ -141,6 +141,7 @@ public class LoginServiceImpl implements LoginService {
             new ModelMap("returnUrl", HttpUtil.decodeURL(loginParam.getReturnUrl()));
             new ModelMap("returnUrl", HttpUtil.decodeURL(loginParam.getReturnUrl()));
         }
         }
 
 
+        // 取出token数据
         JSONObject data = JSON.parseObject(JSON.toJSONString(tk.getBind()));
         JSONObject data = JSON.parseObject(JSON.toJSONString(tk.getBind()));
         Long userUU = data.getLong("userUU");
         Long userUU = data.getLong("userUU");
         Long spaceUU = data.getLong("spaceUU");
         Long spaceUU = data.getLong("spaceUU");
@@ -148,6 +149,20 @@ public class LoginServiceImpl implements LoginService {
             spaceUU = loginParam.getSpaceUU();
             spaceUU = loginParam.getSpaceUU();
         }
         }
 
 
+        // 当用户不在企业时,选择其他企业登录
+        User user = userService.findOne(userUU);
+        Long finalSpaceUU = spaceUU;
+        spaceUU = Optional.ofNullable(user)
+                .map(User::getUserSpaces)
+                .map(userspaces -> {
+                    // 判断用户是否在该企业
+                    for (Userspace userspace : userspaces) {
+                        if (userspace.getSpaceUU().equals(finalSpaceUU)) {
+                            return userspace.getSpaceUU();
+                        }
+                    }
+                    return null;
+                }).orElse(null);
         return login(userUU, spaceUU, loginParam);
         return login(userUU, spaceUU, loginParam);
     }
     }
 
 
@@ -225,6 +240,16 @@ public class LoginServiceImpl implements LoginService {
         return getPwdErrorCount(user.getUserUU());
         return getPwdErrorCount(user.getUserUU());
     }
     }
 
 
+    /**
+     * 用户登录
+     *
+     * @param userUU 用户uu号
+     * @param spaceUU 企业uu号,
+     *                当企业uu号为1时,登录个人账号,
+     *                当企业uu号为空时,则返回可登录企业列表
+     * @param loginParam 登录参数
+     * @return 返回给前端的登录信息
+     */
     private ModelMap login(Long userUU, Long spaceUU, BaseLogin loginParam) {
     private ModelMap login(Long userUU, Long spaceUU, BaseLogin loginParam) {
         App app = appService.findOne(loginParam.getAppId());
         App app = appService.findOne(loginParam.getAppId());
         if (app == null) {
         if (app == null) {
@@ -253,7 +278,7 @@ public class LoginServiceImpl implements LoginService {
                 // 返回企业id和名称
                 // 返回企业id和名称
                 return getSpaceSelect(userAccounts, personalEnable);
                 return getSpaceSelect(userAccounts, personalEnable);
             }
             }
-        } else if (personalEnable && Long.valueOf(spaceUU).equals(Const.SPACEUU_PERSONAL)) {
+        } else if (personalEnable && spaceUU.equals(Const.SPACEUU_PERSONAL)) {
             // 使用个人账号登录
             // 使用个人账号登录
            userAccount = personalAccountService.findOneByUserUU(controlApp.getUid(), userUU);
            userAccount = personalAccountService.findOneByUserUU(controlApp.getUid(), userUU);
         } else {
         } else {