|
|
@@ -3,6 +3,7 @@ package com.uas.sso.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.account.AccountConfig;
|
|
|
+import com.uas.account.entity.UserDetail;
|
|
|
import com.uas.sso.*;
|
|
|
import com.uas.sso.common.util.HttpUtil;
|
|
|
import com.uas.sso.core.Const;
|
|
|
@@ -12,7 +13,6 @@ import com.uas.sso.service.*;
|
|
|
import com.uas.sso.util.AccountTypeUtils;
|
|
|
import com.uas.sso.util.BeanUtil;
|
|
|
import com.uas.sso.util.CaptchaUtil;
|
|
|
-import com.uas.sso.util.encry.HmacUtils;
|
|
|
import com.uas.sso.web.waf.request.WafRequestWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
@@ -158,12 +158,12 @@ public class LoginController extends BaseController {
|
|
|
// 不支持个人账号则跳转优软云
|
|
|
returnUrl = HOME_PAGE;
|
|
|
}
|
|
|
- return loginByUser(userAccount, returnUrl, user.getUserRecord());
|
|
|
+ return loginByUser(userAccount, returnUrl, user.getUserRecord(), true);
|
|
|
}
|
|
|
|
|
|
// 应用允许个人账号,并且账号未绑定企业,或者只绑定了一个企业,直接登录
|
|
|
if (userAccounts.size() == 1) {
|
|
|
- return loginByUser(userAccounts.get(0), returnUrl, user.getUserRecord());
|
|
|
+ return loginByUser(userAccounts.get(0), returnUrl, user.getUserRecord(), true);
|
|
|
}
|
|
|
|
|
|
// 返回企业id和名称
|
|
|
@@ -171,11 +171,11 @@ public class LoginController extends BaseController {
|
|
|
} else if (personalEnable && Long.valueOf(spaceUU).equals(Const.SPACEUU_PERSONAL)) {
|
|
|
// 使用个人账号登录
|
|
|
UserAccount userAccount = personalAccountService.findOneByUserUU(appId, user.getUserUU());
|
|
|
- return loginByUser(userAccount, returnUrl, user.getUserRecord());
|
|
|
+ return loginByUser(userAccount, returnUrl, user.getUserRecord(), true);
|
|
|
} else {
|
|
|
// 带企业登录
|
|
|
UserAccount userAccount = getUserAccountByUserName(controlApp.getUid(), username, spaceUU);
|
|
|
- return loginByUser(userAccount, returnUrl, user.getUserRecord());
|
|
|
+ return loginByUser(userAccount, returnUrl, user.getUserRecord(), true);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -250,11 +250,10 @@ public class LoginController extends BaseController {
|
|
|
* @param appId 应用id
|
|
|
* @param returnUrl 跳转页面
|
|
|
* @param baseUrl 而外登录接口
|
|
|
- * @param isLoginAll 是否登录默认应用
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value = "/proxy", method = RequestMethod.POST)
|
|
|
- public ModelMap loginProxyByToken(String token, String appId, String returnUrl, String baseUrl, @RequestParam(defaultValue = "true") boolean isLoginAll) {
|
|
|
+ public ModelMap loginProxyByToken(String token, String appId, String returnUrl, String baseUrl) {
|
|
|
Token tk = tokenService.findOne(token);
|
|
|
if (null != tk) {
|
|
|
JSONObject data = JSON.parseObject(JSON.toJSONString(tk.getBind()));
|
|
|
@@ -271,11 +270,97 @@ public class LoginController extends BaseController {
|
|
|
}
|
|
|
|
|
|
UserAccount userAccount = userAccountService.findOneByUserUU(app.getUid(), userUU, spaceUU);
|
|
|
- return loginByUser(userAccount, returnUrl, null);
|
|
|
+ return loginByUser(userAccount, returnUrl, null, true);
|
|
|
}
|
|
|
return error("验证信息已过期");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * uu互联代理登录
|
|
|
+ * @param token tokenId
|
|
|
+ * @param appId 登录应用应用id
|
|
|
+ * @param spaceUU 企业uu号
|
|
|
+ * @param returnUrl 跳转页面
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/mobile/proxy", method = RequestMethod.POST)
|
|
|
+ public ModelMap loginProxyByToken(String token, String appId, Long spaceUU, String returnUrl) {
|
|
|
+ Token tk = tokenService.findOne(token);
|
|
|
+ App app = appService.findOne(appId);
|
|
|
+ String loginUrl = app.getLoginUrl();
|
|
|
+ request.getSession().setAttribute("baseUrl", loginUrl);
|
|
|
+ Long userUU = (Long) tk.getBind();
|
|
|
+
|
|
|
+ if (app != null) {
|
|
|
+ app = StringUtils.isEmpty(app.getUserControl()) ? app : appService.findOne(app.getUserControl());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (app == null) {
|
|
|
+ app = appService.findOne(AccountConfig.ACCOUNT_CENTER);
|
|
|
+ }
|
|
|
+
|
|
|
+ UserAccount userAccount = userAccountService.findOneByUserUU(app.getUid(), userUU, spaceUU);
|
|
|
+ return loginByUser(userAccount, returnUrl, null, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * uu互联更新token
|
|
|
+ * @param token tokenId
|
|
|
+ * @return 新token
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/updateToken", method = RequestMethod.GET)
|
|
|
+ public ModelMap updateToken(String token) {
|
|
|
+ Token oldToken = tokenService.findOne(token);
|
|
|
+ oldToken.setExpires_in(7*24*60*60);
|
|
|
+ tokenService.save(oldToken);
|
|
|
+ return success(token);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping(value = "/mobile", method = RequestMethod.POST)
|
|
|
+ public ModelMap getAllAccount(@RequestParam String mobile, String password) {
|
|
|
+ User user = userService.findByMobile(mobile);
|
|
|
+ List<ModelMap> allowedList = new ArrayList<ModelMap>();
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ return error("未找到用户信息");
|
|
|
+ }
|
|
|
+ // 校验密码
|
|
|
+ userService.checkPasswordByMobile(mobile, password, false);
|
|
|
+ Long userUU = user.getUserUU();
|
|
|
+ String userName = user.getVipName();
|
|
|
+ List<ModelMap> spaces = new ArrayList<ModelMap>();
|
|
|
+ Long imId = Long.valueOf(user.getImId());
|
|
|
+ App b2b = appService.findOne("b2b");
|
|
|
+ App uas = appService.findOne("uas");
|
|
|
+ for (Userspace userspace : user.getUserSpaces()) {
|
|
|
+ ModelMap space = new ModelMap();
|
|
|
+ space.put("enuu", userspace.getSpaceUU());
|
|
|
+ space.put("name", userspace.getSpaceName());
|
|
|
+ space.put("businessCode", userspace.getBusinessCode());
|
|
|
+ spaces.add(space);
|
|
|
+ if (!StringUtils.isEmpty(userspace.getWebsite())) {
|
|
|
+ ModelMap map = new ModelMap("platform", "ERP");
|
|
|
+ map.put("account", userspace.getSpaceUU());
|
|
|
+ map.put("master", "");
|
|
|
+ map.put("name", userspace.getSpaceName());
|
|
|
+ map.put("enuu", userspace.getSpaceUU());
|
|
|
+ map.put("masterId", "");
|
|
|
+ map.put("website", userspace.getWebsite()
|
|
|
+ + (userspace.getWebsite() != null && !userspace.getWebsite().endsWith("/") ? "/" : ""));
|
|
|
+ map.put("imid", imId);
|
|
|
+ map.put("birthday", user.getBirthday());
|
|
|
+ map.put("sex", user.getSex());
|
|
|
+ map.put("businessCode", userspace.getBusinessCode());
|
|
|
+ allowedList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Token token = new Token(new ModelMap("userUU", userUU), 7*24*60*60);
|
|
|
+ tokenService.save(token);
|
|
|
+ allowedList.add(new ModelMap("account", userUU).addAttribute("platform", "B2B").addAttribute("imid", imId).addAttribute("spaces", spaces).addAttribute("userName", userName));
|
|
|
+ return new ModelMap("token", token.getId()).addAttribute("datalist", allowedList);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 密码输错处理
|
|
|
*
|
|
|
@@ -353,7 +438,7 @@ public class LoginController extends BaseController {
|
|
|
* @param userRecord 用户登录记录,便于记录登录时间,不能直接new出来
|
|
|
* @return
|
|
|
*/
|
|
|
- private ModelMap loginByUser(UserAccount userAccount, String returnUrl, UserRecord userRecord) {
|
|
|
+ private ModelMap loginByUser(UserAccount userAccount, String returnUrl, UserRecord userRecord, boolean isLoginAll) {
|
|
|
/*
|
|
|
* 设置登录 Cookie 最后一个参数 true 时添加 cookie 同时销毁当前 JSESSIONID
|
|
|
* 创建信任的 JSESSIONID
|
|
|
@@ -371,7 +456,7 @@ public class LoginController extends BaseController {
|
|
|
|
|
|
// 设置返回值,通知各个应用用户已经登录
|
|
|
ModelMap data = new ModelMap();
|
|
|
- data = addOtherAppRequestData(userAccount, data, request.getSession().getAttribute("baseUrl"), true);
|
|
|
+ data = addOtherAppRequestData(userAccount, data, request.getSession().getAttribute("baseUrl"), isLoginAll);
|
|
|
data.put("returnUrl", HttpUtil.decodeURL(returnUrl));
|
|
|
return success(data);
|
|
|
}
|
|
|
@@ -490,7 +575,9 @@ public class LoginController extends BaseController {
|
|
|
App app = appService.findOne(appId);
|
|
|
App defaultApp = appService.findOne("sso");
|
|
|
PageStyle pageStyle = app == null ? defaultApp.getPageStyle() : app.getPageStyle();
|
|
|
- BeanUtil.copyProperties(pageStyle, defaultApp.getPageStyle(), true);
|
|
|
+ if (pageStyle != null) {
|
|
|
+ BeanUtil.copyProperties(pageStyle, defaultApp.getPageStyle(), true);
|
|
|
+ }
|
|
|
return success(defaultApp.getPageStyle());
|
|
|
}
|
|
|
|