|
|
@@ -10,13 +10,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
|
|
|
-import static com.alibaba.fastjson.JSON.parseArray;
|
|
|
|
|
|
/**
|
|
|
* @author wangmh
|
|
|
@@ -33,7 +32,7 @@ public class UpdateUserController extends BaseController {
|
|
|
/**
|
|
|
* 校验信息token有效期
|
|
|
*/
|
|
|
- private static final int EXPIRES = 7*24*60*60;
|
|
|
+ private static final int EXPIRES = 10 * 60;
|
|
|
|
|
|
/**
|
|
|
* 获取可以校验方式
|
|
|
@@ -108,7 +107,7 @@ public class UpdateUserController extends BaseController {
|
|
|
|
|
|
// 设置返回数据
|
|
|
User user = userService.findByMobile(mobile);
|
|
|
- existToken = new Token(user, EXPIRES);
|
|
|
+ existToken = new Token(user.getUserUU(), EXPIRES);
|
|
|
tokenService.save(existToken);
|
|
|
return success(existToken.getId());
|
|
|
}
|
|
|
@@ -130,17 +129,23 @@ public class UpdateUserController extends BaseController {
|
|
|
User user = userService.findByUsername(email);
|
|
|
|
|
|
// 设置发送邮件信息
|
|
|
- Token token = new Token(user, EXPIRES);
|
|
|
+ Token token = new Token(user.getUserUU(), EXPIRES);
|
|
|
tokenService.save(token);
|
|
|
ModelMap data = new ModelMap();
|
|
|
data.put("vipName", user.getVipName());
|
|
|
// TODO 邮件认证地址
|
|
|
- if ("mobile".equals(operate)) {
|
|
|
- data.put("url", "http://192.168.253.66:8081/update/user/setMobile?token=" + token);
|
|
|
- } else if ("email".equals(operate)) {
|
|
|
- data.put("url", "http://192.168.253.66:8081/update/user/setMail?token=" + token);
|
|
|
- } else if ("question".equals(operate)) {
|
|
|
- data.put("url", "http://192.168.253.66:8081/update/user/setQuestion?token=" + token);
|
|
|
+ switch (operate) {
|
|
|
+ case "mobile":
|
|
|
+ data.put("url", "http://192.168.253.118:3001/validation/phoneValidationSecondStep?token=" + token.getId());
|
|
|
+ break;
|
|
|
+ case "email":
|
|
|
+ data.put("url", "http://192.168.253.118:3001/validation/emailValidationSecondStep?token=" + token.getId());
|
|
|
+ break;
|
|
|
+ case "question":
|
|
|
+ data.put("url", "http://192.168.253.118:3001/validation/phoneValidationSecondStep?token=" + token.getId());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return error("参数错误");
|
|
|
}
|
|
|
|
|
|
// 发送邮件
|
|
|
@@ -177,7 +182,7 @@ public class UpdateUserController extends BaseController {
|
|
|
}
|
|
|
|
|
|
// 返回token
|
|
|
- Token expireToken = new Token(user, EXPIRES);
|
|
|
+ Token expireToken = new Token(user.getUserUU(), EXPIRES);
|
|
|
tokenService.save(expireToken);
|
|
|
ModelMap data = new ModelMap();
|
|
|
data.put("token", expireToken.getId());
|
|
|
@@ -199,11 +204,12 @@ public class UpdateUserController extends BaseController {
|
|
|
return error("请求超时");
|
|
|
}
|
|
|
|
|
|
- // 拿出user放入session中
|
|
|
- User user = (User) existToken.getBind();
|
|
|
- if (user == null) {
|
|
|
+ // 拿出userUU,并删除token
|
|
|
+ if (existToken.getBind() == null || !(existToken.getBind() instanceof Long)) {
|
|
|
return error("请求错误");
|
|
|
}
|
|
|
+ Long userUU = (Long) existToken.getBind();
|
|
|
+ User user = userService.findOne(userUU);
|
|
|
|
|
|
// 获取验证码
|
|
|
token = getMobileToken(mobile);
|
|
|
@@ -276,64 +282,72 @@ public class UpdateUserController extends BaseController {
|
|
|
return error("请求超时");
|
|
|
}
|
|
|
|
|
|
- // 拿出user放入session中
|
|
|
- User user = (User) existToken.getBind();
|
|
|
- if (user == null) {
|
|
|
+ // 校验空参数
|
|
|
+ if (StringUtils.isEmpty(email)) {
|
|
|
+ return error("邮箱不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 拿出userUU,并删除token
|
|
|
+ if (existToken.getBind() == null || !(existToken.getBind() instanceof Long)) {
|
|
|
return error("请求错误");
|
|
|
}
|
|
|
+ Long userUU = (Long) existToken.getBind();
|
|
|
+ User user = userService.findOne(userUU);
|
|
|
tokenService.delete(token);
|
|
|
|
|
|
- // 获取验证码
|
|
|
- token = getEmailToken(email);
|
|
|
+ // 设置发送邮件信息
|
|
|
+ Map<String, Object> tokenMap = new HashMap<>(2);
|
|
|
+ tokenMap.put("userUU", userUU);
|
|
|
+ tokenMap.put("newEmail", email);
|
|
|
+ Token returnToken = new Token(tokenMap, EXPIRES);
|
|
|
+ tokenService.save(returnToken);
|
|
|
+ ModelMap data = new ModelMap();
|
|
|
+ data.put("vipName", user.getVipName());
|
|
|
+ // TODO 邮件认证地址
|
|
|
+ data.put("url", "http://192.168.253.118:3001/update/user/email?token=" + returnToken.getId());
|
|
|
|
|
|
- request.getSession().setAttribute("user", user);
|
|
|
- return success(new ModelMap("token", token));
|
|
|
+ // 发送邮件
|
|
|
+ if (!StringUtils.isEmpty(email)) {
|
|
|
+ Setting mailTplId = settingService.findOne("templateForSendMailWhenResetPassword");
|
|
|
+ if (!StringUtils.isEmpty(mailTplId)) {
|
|
|
+ mailService.send(mailTplId.getValue(), email, data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return success();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 设置邮箱
|
|
|
*
|
|
|
* @author wangmh
|
|
|
* @date 2018/1/11 21:15
|
|
|
- * @param email 邮箱
|
|
|
- * @param code 验证码
|
|
|
- * @param token 验证码tokenId
|
|
|
+ * @param token 验证tokenId
|
|
|
* @return
|
|
|
*/
|
|
|
- @RequestMapping(value = "/setEmail", method = RequestMethod.POST)
|
|
|
- public ModelMap updateEmail(String email, String code, @RequestParam String token) {
|
|
|
- // 校验空参数
|
|
|
- if (StringUtils.isEmpty(email)) {
|
|
|
- return error("邮箱不能为空");
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(code)) {
|
|
|
- return error("验证码不能为空");
|
|
|
- }
|
|
|
-
|
|
|
- // 从session中获取用户信息
|
|
|
- User user = (User) request.getSession().getAttribute("user");
|
|
|
- if (user == null) {
|
|
|
- return error("请求超时,请刷新重试");
|
|
|
+ @RequestMapping(value = "/email", method = RequestMethod.GET)
|
|
|
+ public ModelAndView updateEmail(@RequestParam String token) {
|
|
|
+ // 校验token
|
|
|
+ Token existToken = tokenService.findOne(token);
|
|
|
+ if (existToken == null || existToken.isExpired()) {
|
|
|
+ // token过期,跳转到失败页面
|
|
|
+ return new ModelAndView("redirect:http://192.168.253.118:3001/validation/validFail");
|
|
|
}
|
|
|
|
|
|
- // 校验邮箱是否被使用
|
|
|
- if (userService.emailHasRegistered(email)){
|
|
|
- return error("邮箱已注册");
|
|
|
+ // 拿出userUU,并删除token
|
|
|
+ if (existToken.getBind() == null || !(existToken.getBind() instanceof Map)) {
|
|
|
+ // token错误,跳转到失败页面
|
|
|
+ return new ModelAndView("redirect:http://192.168.253.118:3001/validation/validFail");
|
|
|
}
|
|
|
+ Map<String, Object> data = (Map) existToken.getBind();
|
|
|
+ Long userUU = (Long) data.get("userUU");
|
|
|
+ String newEmail = (String) data.get("newEmail");
|
|
|
|
|
|
- // 校验token
|
|
|
- Token existToken = tokenService.findOne(token);
|
|
|
- if (existToken == null) {
|
|
|
- return error("请重新获取验证码");
|
|
|
- }
|
|
|
+ userService.updateEmail(userUU, newEmail);
|
|
|
|
|
|
- // 校验验证码
|
|
|
- checkEmailCode(token, email, code);
|
|
|
+ // 删除token
|
|
|
tokenService.delete(token);
|
|
|
-
|
|
|
- // 修改邮箱
|
|
|
- userService.updateEmail(user.getUserUU(), email);
|
|
|
- return success();
|
|
|
+ return new ModelAndView("redirect:http://192.168.253.118:3001/validation/emailValidationThirdStep");
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/setQuestion", method = RequestMethod.POST)
|
|
|
@@ -367,16 +381,21 @@ public class UpdateUserController extends BaseController {
|
|
|
@RequestMapping(value = "/checkCode/{type}", method = RequestMethod.POST)
|
|
|
public ModelMap checkCode(@PathVariable String type, @RequestParam String token, String code, String mobile, String email) {
|
|
|
// 校验验证码
|
|
|
- if ("mobile".equals(type)) {
|
|
|
- if (StringUtils.isEmpty(mobile)) {
|
|
|
- return error("手机号不能为空");
|
|
|
- }
|
|
|
- checkMobileCode(token, mobile, code);
|
|
|
- } else if ("email".equals(type)) {
|
|
|
- if (StringUtils.isEmpty(email)) {
|
|
|
- return error("邮箱不能为空");
|
|
|
- }
|
|
|
- checkEmailCode(token, email, code);
|
|
|
+ switch (type) {
|
|
|
+ case "mobile":
|
|
|
+ if (StringUtils.isEmpty(mobile)) {
|
|
|
+ return error("手机号不能为空");
|
|
|
+ }
|
|
|
+ checkMobileCode(token, mobile, code);
|
|
|
+ break;
|
|
|
+ case "email":
|
|
|
+ if (StringUtils.isEmpty(email)) {
|
|
|
+ return error("邮箱不能为空");
|
|
|
+ }
|
|
|
+ checkEmailCode(token, email, code);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return error("参数错误");
|
|
|
}
|
|
|
|
|
|
return success();
|