Просмотр исходного кода

fix:pc端用户未绑定企业报错,手机端用户未绑定企业返回企业列表

wangmh 7 лет назад
Родитель
Сommit
ed99cf07c5

+ 2 - 2
sso-server/src/main/java/com/uas/sso/controller/LoginController.java

@@ -141,7 +141,7 @@ public class LoginController extends BaseController {
     }
 
     /**
-     * erp和uu互联跳转
+     * erp跳转
      * 代理登录,根据tokenId拿到当前用户登录的用户uu号和企业uu号进行登录
      *
      * @param loginParam loginParam
@@ -164,7 +164,7 @@ public class LoginController extends BaseController {
     @RequestMapping(value = "/mobile/proxy", method = RequestMethod.POST)
     public ModelMap loginProxyByTokenMobile(TokenLogin loginParam) {
         try {
-            return success(loginService.loginByToken(loginParam));
+            return success(loginService.loginByToken(loginParam, true));
         } finally {
             LOGGER.info("手机端代理登录,参数:{}", JSON.toJSONString(loginParam));
         }

+ 8 - 0
sso-server/src/main/java/com/uas/sso/service/LoginService.java

@@ -29,6 +29,14 @@ public interface LoginService {
      */
     ModelMap loginByToken(TokenLogin loginParam);
 
+    /**
+     * 通过token登录
+     * @param loginParam 登录参数
+     * @param skip 是否忽略用户不在企业的情况,如果不忽略用户不在企业的情况,则会抛出VisibleError异常
+     * @return
+     */
+    ModelMap loginByToken(TokenLogin loginParam, boolean skip);
+
     /**
      * 通过短信验证码登录
      * @param loginParam

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

@@ -134,11 +134,16 @@ public class LoginServiceImpl implements LoginService {
 
     @Override
     public ModelMap loginByToken(TokenLogin loginParam) {
+        return loginByToken(loginParam, false);
+    }
+
+    @Override
+    public ModelMap loginByToken(TokenLogin loginParam, boolean skip) {
         Token tk = tokenService.findOne(loginParam.getToken());
         // token不存在则不登录返回
         if (tk == null) {
             LOGGER.warn("token({})已过期", loginParam.getToken());
-            new ModelMap("returnUrl", HttpUtil.decodeURL(loginParam.getReturnUrl()));
+            return new ModelMap("returnUrl", HttpUtil.decodeURL(loginParam.getReturnUrl()));
         }
 
         // 取出token数据
@@ -163,6 +168,12 @@ public class LoginServiceImpl implements LoginService {
                     }
                     return null;
                 }).orElse(null);
+
+        // 是否忽略用户不在企业的情况
+        if (!skip && spaceUU == null) {
+            LOGGER.warn("当前用户在优软云未绑定企业,参数:{}", JSON.toJSONString(loginParam));
+            throw new VisibleError("当前用户在优软云未绑定企业");
+        }
         return login(userUU, spaceUU, loginParam);
     }