|
@@ -63,7 +63,7 @@ public class AuthController {
|
|
|
|
|
|
@RequestMapping(value = "/token", method = RequestMethod.POST)
|
|
|
@ApiOperation(value = "验证token", httpMethod = "POST")
|
|
|
- public Response<MyDto> token(@RequestHeader("token") String token, HttpSession session, HttpServletRequest request) {
|
|
|
+ public Response<MyDto> token(@RequestHeader(value = "token", required = false) String token, HttpSession session, HttpServletRequest request) {
|
|
|
User user;
|
|
|
if (token == null || token.isEmpty()){
|
|
|
user = shiroHelp.getLoginUser();
|
|
@@ -109,29 +109,33 @@ public class AuthController {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
if (user!=null){
|
|
|
// 已登录用户,绑定
|
|
|
- usersService.Oauth(user, code, "wechat_pc");
|
|
|
+ user = usersService.Oauth(user, code, "wechat_pc", true);
|
|
|
}else{
|
|
|
- shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_pc"));
|
|
|
+ shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_pc", true));
|
|
|
+ user = shiroHelp.getLoginUser();
|
|
|
}
|
|
|
- User entity = shiroHelp.getLoginUser();
|
|
|
- MyDto dto = processUser(entity, request);
|
|
|
+ MyDto dto = processUser(user, request);
|
|
|
return ResponseHelp.success(dto);
|
|
|
}
|
|
|
|
|
|
+ // 公众号登录注册:wechat(false) -> wechat(true) -> bind
|
|
|
+ // pc登录注册:wechat_pc(true) -> bind
|
|
|
+ // login -> wechat_pc(true)
|
|
|
@RequestMapping(value = "/wechat", method = RequestMethod.GET)
|
|
|
- @ApiOperation(value = "直接微信二维码登录", httpMethod = "GET")
|
|
|
+ @ApiOperation(value = "直接微信公众号登录", httpMethod = "GET")
|
|
|
public Response<MyDto> directWechat(
|
|
|
@RequestParam(required = false, defaultValue = "") String code,
|
|
|
+ @RequestParam(required = false, defaultValue = "") boolean userInfo,
|
|
|
HttpSession session, HttpServletRequest request) {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
if (user!=null){
|
|
|
- // 已登录用户,绑定
|
|
|
- usersService.Oauth(user, code, "wechat_native");
|
|
|
+ // 第二次获取userInfo的,重新登录
|
|
|
+ shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_native", userInfo));
|
|
|
}else{
|
|
|
- shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_native"));
|
|
|
+ shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_native", userInfo));
|
|
|
+ user = shiroHelp.getLoginUser();
|
|
|
}
|
|
|
- User entity = shiroHelp.getLoginUser();
|
|
|
- MyDto dto = processUser(entity, request);
|
|
|
+ MyDto dto = processUser(user, request);
|
|
|
return ResponseHelp.success(dto);
|
|
|
}
|
|
|
|
|
@@ -144,14 +148,14 @@ public class AuthController {
|
|
|
|
|
|
@RequestMapping(value = "/bind", method = RequestMethod.POST)
|
|
|
@ApiOperation(value = "绑定手机号", notes="第三方登录后可执行", httpMethod = "POST")
|
|
|
- public Response<Boolean> bind(@RequestBody @Validated UserValidMobileDto userValidMobileDto, HttpSession session, HttpServletRequest request) {
|
|
|
+ public Response<MyDto> bind(@RequestBody @Validated UserValidMobileDto userValidMobileDto, HttpSession session, HttpServletRequest request) {
|
|
|
if (!smsHelp.verifyCode(userValidMobileDto.getArea(), userValidMobileDto.getMobile(), userValidMobileDto.getMobileVerifyCode(), session)) {
|
|
|
throw new ParameterException("验证码有误,请重新获取!");
|
|
|
}
|
|
|
User openUser = (User) shiroHelp.getLoginUser();
|
|
|
if(openUser == null)
|
|
|
throw new SystemException("第三方登录错误");
|
|
|
- if(openUser.getMobile().length() > 0)
|
|
|
+ if(openUser.getMobile() != null && openUser.getMobile().length() > 0)
|
|
|
throw new SystemException("手机号已绑定");
|
|
|
|
|
|
try{
|
|
@@ -161,7 +165,11 @@ public class AuthController {
|
|
|
}catch (ParameterException e){
|
|
|
throw new ParameterException("该手机号绑定其他账号,请更换手机号码!");
|
|
|
}
|
|
|
- return ResponseHelp.success(true);
|
|
|
+ shiroHelp.getSession().login(shiroHelp.user(userValidMobileDto.getArea()+":"+userValidMobileDto.getMobile(), ""));
|
|
|
+
|
|
|
+ User entity = shiroHelp.getLoginUser();
|
|
|
+ MyDto dto = processUser(entity, request);
|
|
|
+ return ResponseHelp.success(dto);
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/valid/invite_code", method = RequestMethod.GET)
|
|
@@ -204,6 +212,9 @@ public class AuthController {
|
|
|
}
|
|
|
|
|
|
private MyDto processUser(User user, HttpServletRequest request){
|
|
|
+ if (user.getId() != null){
|
|
|
+ user = usersService.get(user.getId());
|
|
|
+ }
|
|
|
MyDto dto = Transform.convert(user, MyDto.class);
|
|
|
if (user.getId() == null || user.getId() == 0) return dto;
|
|
|
String ip = Tools.getClientIp(request);
|