|
@@ -3,7 +3,6 @@ package com.uas.sso.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.account.AccountConfig;
|
|
import com.uas.account.AccountConfig;
|
|
|
-import com.uas.account.entity.UserDetail;
|
|
|
|
|
import com.uas.sso.*;
|
|
import com.uas.sso.*;
|
|
|
import com.uas.sso.common.util.HttpUtil;
|
|
import com.uas.sso.common.util.HttpUtil;
|
|
|
import com.uas.sso.core.Const;
|
|
import com.uas.sso.core.Const;
|
|
@@ -12,6 +11,8 @@ import com.uas.sso.entity.Token;
|
|
|
import com.uas.sso.service.*;
|
|
import com.uas.sso.service.*;
|
|
|
import com.uas.sso.util.*;
|
|
import com.uas.sso.util.*;
|
|
|
import com.uas.sso.web.waf.request.WafRequestWrapper;
|
|
import com.uas.sso.web.waf.request.WafRequestWrapper;
|
|
|
|
|
+import com.uas.sso.weixin.entity.OAuthInfo;
|
|
|
|
|
+import com.uas.sso.weixin.service.WeChatService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.ui.ModelMap;
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
@@ -68,6 +69,9 @@ public class LoginController extends BaseController {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private PersonalAccountService personalAccountService;
|
|
private PersonalAccountService personalAccountService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private WeChatService weChatService;
|
|
|
|
|
+
|
|
|
@RequestMapping(method = RequestMethod.POST)
|
|
@RequestMapping(method = RequestMethod.POST)
|
|
|
public ModelMap login() {
|
|
public ModelMap login() {
|
|
|
// 获取登录信息
|
|
// 获取登录信息
|
|
@@ -737,6 +741,7 @@ public class LoginController extends BaseController {
|
|
|
*/
|
|
*/
|
|
|
private ModelMap login(Long userUU, String appId, String spaceUU, String returnUrl) {
|
|
private ModelMap login(Long userUU, String appId, String spaceUU, String returnUrl) {
|
|
|
// 登录
|
|
// 登录
|
|
|
|
|
+ appId = StringUtils.isEmpty(appId) ? AccountConfig.ACCOUNT_CENTER : appId;
|
|
|
App app = appService.findOne(appId);
|
|
App app = appService.findOne(appId);
|
|
|
if (app == null) {
|
|
if (app == null) {
|
|
|
throw new VerifyError("应用不存在");
|
|
throw new VerifyError("应用不存在");
|
|
@@ -777,4 +782,46 @@ public class LoginController extends BaseController {
|
|
|
return loginByUser(userAccount, returnUrl, true);
|
|
return loginByUser(userAccount, returnUrl, true);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信获取code
|
|
|
|
|
+ * @param code 获取用户信息的code
|
|
|
|
|
+ * @param state 验证请求
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @RequestMapping(value = "/wxqrLogin", method = RequestMethod.POST)
|
|
|
|
|
+ public ModelMap wxqrLogin(@RequestParam(defaultValue = "sso") String appId, String code, String state) {
|
|
|
|
|
+ // TODO 校验state
|
|
|
|
|
+
|
|
|
|
|
+ // 获取用户信息
|
|
|
|
|
+ OAuthInfo oAuthInfo = weChatService.getOAuthInfoByCode(code);
|
|
|
|
|
+ User user = null;
|
|
|
|
|
+ if (oAuthInfo == null || StringUtils.isEmpty(oAuthInfo.getAccess_token())) {
|
|
|
|
|
+ Long userUU = (Long) request.getSession().getAttribute("userUU");
|
|
|
|
|
+ if (userUU == null) {
|
|
|
|
|
+ return error("验证信息过期,请重新扫码登录");
|
|
|
|
|
+ }
|
|
|
|
|
+ user = new User(userUU);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ user = userService.findByWxUnionid(oAuthInfo.getUnionid());
|
|
|
|
|
+ if (user == null) {
|
|
|
|
|
+ // 提示前端用户微信未绑定账号
|
|
|
|
|
+ Token token = new Token(oAuthInfo, oAuthInfo.getExpires_in());
|
|
|
|
|
+ tokenService.save(token);
|
|
|
|
|
+ ModelMap data = new ModelMap("hasRegister", false);
|
|
|
|
|
+ data.put("token", token.getId());
|
|
|
|
|
+ return success(data);
|
|
|
|
|
+ }
|
|
|
|
|
+ request.getSession().setAttribute("userUU", user.getUserUU());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 登录
|
|
|
|
|
+ WafRequestWrapper wr = new WafRequestWrapper(request);
|
|
|
|
|
+ String spaceUU = wr.getParameter("spaceUU");
|
|
|
|
|
+ String returnUrl = wr.getParameter("returnUrl");
|
|
|
|
|
+ String baseUrl = wr.getParameter("baseUrl");
|
|
|
|
|
+ request.getSession().setAttribute("baseUrl", baseUrl);
|
|
|
|
|
+ return success(login(user.getUserUU(), appId, spaceUU, returnUrl));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|