|
@@ -58,35 +58,35 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
* 登录页面
|
|
* 登录页面
|
|
*/
|
|
*/
|
|
@PostMapping(value = "login")
|
|
@PostMapping(value = "login")
|
|
- public Map<String, Object> login(WebsiteUser websiteUser) {
|
|
|
|
|
|
+ public R<Map<String, Object>> login(WebsiteUser websiteUser) {
|
|
String loginCode = websiteUser.getLoginCode();
|
|
String loginCode = websiteUser.getLoginCode();
|
|
String password = websiteUser.getPassword();
|
|
String password = websiteUser.getPassword();
|
|
// 登录用户名解密(解决登录用户名明文传输安全问题)
|
|
// 登录用户名解密(解决登录用户名明文传输安全问题)
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
if (StringUtils.isEmpty(loginCode)) {
|
|
if (StringUtils.isEmpty(loginCode)) {
|
|
- return R.error("登录账号为空");
|
|
|
|
|
|
+ return R.fail("登录账号为空");
|
|
}
|
|
}
|
|
if (StringUtils.isEmpty(password)) {
|
|
if (StringUtils.isEmpty(password)) {
|
|
- return R.error("登录密码为空");
|
|
|
|
|
|
+ return R.fail("登录密码为空");
|
|
}
|
|
}
|
|
loginCode = DesUtils.decode(loginCode, secretKey);
|
|
loginCode = DesUtils.decode(loginCode, secretKey);
|
|
password = DesUtils.decode(password, secretKey);
|
|
password = DesUtils.decode(password, secretKey);
|
|
if (StringUtils.isNotEmpty(websiteUser.getValidCode())) {
|
|
if (StringUtils.isNotEmpty(websiteUser.getValidCode())) {
|
|
//验证是否一致
|
|
//验证是否一致
|
|
if (!websiteUser.getValidCode().equals((String) redisUtil.get(Constants.WEBSITE_VALID_CODE + websiteUser.getUnTime()))) {
|
|
if (!websiteUser.getValidCode().equals((String) redisUtil.get(Constants.WEBSITE_VALID_CODE + websiteUser.getUnTime()))) {
|
|
- return R.error("验证码不一致");
|
|
|
|
|
|
+ return R.fail("验证码不一致");
|
|
}
|
|
}
|
|
redisUtil.del(Constants.WEBSITE_VALID_CODE + websiteUser.getUnTime());
|
|
redisUtil.del(Constants.WEBSITE_VALID_CODE + websiteUser.getUnTime());
|
|
}
|
|
}
|
|
//查询用户
|
|
//查询用户
|
|
WebsiteUser oldUser = websiteUserService.findLoginCode(loginCode);
|
|
WebsiteUser oldUser = websiteUserService.findLoginCode(loginCode);
|
|
if (oldUser == null) {
|
|
if (oldUser == null) {
|
|
- return R.error("用户不存在,请先注册");
|
|
|
|
|
|
+ return R.fail("用户不存在,请先注册");
|
|
}
|
|
}
|
|
//验证密码
|
|
//验证密码
|
|
String passwordEncode = PasswordUtil.encrypt(loginCode, password, oldUser.getSalt());
|
|
String passwordEncode = PasswordUtil.encrypt(loginCode, password, oldUser.getSalt());
|
|
if (!passwordEncode.equals(oldUser.getPassword())) {
|
|
if (!passwordEncode.equals(oldUser.getPassword())) {
|
|
- return R.error("登录密码不正确");
|
|
|
|
|
|
+ return R.fail("登录密码不正确");
|
|
}
|
|
}
|
|
//TODO 单点登录,清理登录用户的登录token
|
|
//TODO 单点登录,清理登录用户的登录token
|
|
List<Object> tokenList = redisUtil.lGet(Constants.PREFIX_USER_TOKEN_LIST + loginCode, 0, -1);
|
|
List<Object> tokenList = redisUtil.lGet(Constants.PREFIX_USER_TOKEN_LIST + loginCode, 0, -1);
|
|
@@ -107,31 +107,31 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
}
|
|
}
|
|
|
|
|
|
@PostMapping(value = "register")
|
|
@PostMapping(value = "register")
|
|
- public Map<String, Object> register(WebsiteUser websiteUser) {
|
|
|
|
|
|
+ public R<Map<String, Object>> register(WebsiteUser websiteUser) {
|
|
String loginCode = websiteUser.getLoginCode();
|
|
String loginCode = websiteUser.getLoginCode();
|
|
String password = websiteUser.getPassword();
|
|
String password = websiteUser.getPassword();
|
|
// 登录用户名解密(解决登录用户名明文传输安全问题)
|
|
// 登录用户名解密(解决登录用户名明文传输安全问题)
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
if (StringUtils.isEmpty(loginCode)) {
|
|
if (StringUtils.isEmpty(loginCode)) {
|
|
- return R.error("登录账号为空");
|
|
|
|
|
|
+ return R.fail("登录账号为空");
|
|
}
|
|
}
|
|
if (StringUtils.isEmpty(password)) {
|
|
if (StringUtils.isEmpty(password)) {
|
|
- return R.error("登录密码为空");
|
|
|
|
|
|
+ return R.fail("登录密码为空");
|
|
}
|
|
}
|
|
loginCode = DesUtils.decode(loginCode, secretKey);
|
|
loginCode = DesUtils.decode(loginCode, secretKey);
|
|
password = DesUtils.decode(password, secretKey);
|
|
password = DesUtils.decode(password, secretKey);
|
|
String confirmNewPassword = DesUtils.decode(websiteUser.getConfirmNewPassword(), secretKey);
|
|
String confirmNewPassword = DesUtils.decode(websiteUser.getConfirmNewPassword(), secretKey);
|
|
// 验证新密码和确认密码
|
|
// 验证新密码和确认密码
|
|
if (!StringUtils.equals(password, confirmNewPassword)) {
|
|
if (!StringUtils.equals(password, confirmNewPassword)) {
|
|
- return R.error("两次密码不一致");
|
|
|
|
|
|
+ return R.fail("两次密码不一致");
|
|
}
|
|
}
|
|
WebsiteUser oldUser = websiteUserService.findLoginCode(loginCode);
|
|
WebsiteUser oldUser = websiteUserService.findLoginCode(loginCode);
|
|
if (oldUser != null) {
|
|
if (oldUser != null) {
|
|
- return R.error("用户已存在");
|
|
|
|
|
|
+ return R.fail("用户已存在");
|
|
}
|
|
}
|
|
oldUser = websiteUserService.findEmail(websiteUser.getEmail());
|
|
oldUser = websiteUserService.findEmail(websiteUser.getEmail());
|
|
if (oldUser != null) {
|
|
if (oldUser != null) {
|
|
- return R.error("邮箱已存在");
|
|
|
|
|
|
+ return R.fail("邮箱已存在");
|
|
}
|
|
}
|
|
WebsiteUser newUser = new WebsiteUser();
|
|
WebsiteUser newUser = new WebsiteUser();
|
|
BeanUtils.copyProperties(websiteUser, newUser);
|
|
BeanUtils.copyProperties(websiteUser, newUser);
|
|
@@ -150,13 +150,13 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
*/
|
|
*/
|
|
@WebsiteAuth
|
|
@WebsiteAuth
|
|
@PostMapping(value = "updatePwd")
|
|
@PostMapping(value = "updatePwd")
|
|
- public Map<String, Object> updatePwd(WebsiteUserDto dto) throws Exception {
|
|
|
|
|
|
+ public R<String> updatePwd(WebsiteUserDto dto) throws Exception {
|
|
String userId = getUserIdByRequest();
|
|
String userId = getUserIdByRequest();
|
|
WebsiteUser websiteUser = websiteUserService.get(userId);
|
|
WebsiteUser websiteUser = websiteUserService.get(userId);
|
|
- return R.ok(updatePass(websiteUser, dto.getNewPassword(), dto.getConfirmNewPassword()));
|
|
|
|
|
|
+ return updatePass(websiteUser, dto.getNewPassword(), dto.getConfirmNewPassword());
|
|
}
|
|
}
|
|
|
|
|
|
- private String updatePass(WebsiteUser websiteUser, String newPassword, String confirmNewPassword) {
|
|
|
|
|
|
+ private R<String> updatePass(WebsiteUser websiteUser, String newPassword, String confirmNewPassword) {
|
|
// 登录密码解密(解决密码明文传输安全问题)
|
|
// 登录密码解密(解决密码明文传输安全问题)
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
if (StringUtils.isNotBlank(secretKey)) {
|
|
if (StringUtils.isNotBlank(secretKey)) {
|
|
@@ -164,29 +164,32 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
confirmNewPassword = DesUtils.decode(confirmNewPassword, secretKey);
|
|
confirmNewPassword = DesUtils.decode(confirmNewPassword, secretKey);
|
|
}
|
|
}
|
|
if (StringUtils.isEmpty(newPassword)) {
|
|
if (StringUtils.isEmpty(newPassword)) {
|
|
- return "密码为空";
|
|
|
|
|
|
+ return R.fail("密码为空");
|
|
}
|
|
}
|
|
// 验证新密码和确认密码
|
|
// 验证新密码和确认密码
|
|
if (!StringUtils.equals(newPassword, confirmNewPassword)) {
|
|
if (!StringUtils.equals(newPassword, confirmNewPassword)) {
|
|
- return "两次密码不一致";
|
|
|
|
|
|
+ return R.fail("两次密码不一致");
|
|
}
|
|
}
|
|
// 更新密码
|
|
// 更新密码
|
|
String passwordEncode = PasswordUtil.encrypt(websiteUser.getLoginCode(), newPassword, websiteUser.getSalt());
|
|
String passwordEncode = PasswordUtil.encrypt(websiteUser.getLoginCode(), newPassword, websiteUser.getSalt());
|
|
websiteUser.setPassword(passwordEncode);
|
|
websiteUser.setPassword(passwordEncode);
|
|
websiteUserService.updatePass(websiteUser);
|
|
websiteUserService.updatePass(websiteUser);
|
|
- return "成功";
|
|
|
|
|
|
+ return R.ok();
|
|
}
|
|
}
|
|
|
|
|
|
@PostMapping(value = "forgetPwd")
|
|
@PostMapping(value = "forgetPwd")
|
|
- public Map<String, Object> forgetPwd(WebsiteUserDto dto) {
|
|
|
|
|
|
+ public R<Map<String, Object>> forgetPwd(WebsiteUserDto dto) {
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
|
|
String redisKey = Constants.PREFIX_USER_FORGET_TOKEN + dto.getUuid();
|
|
String redisKey = Constants.PREFIX_USER_FORGET_TOKEN + dto.getUuid();
|
|
String userId = (String) redisUtil.get(redisKey);
|
|
String userId = (String) redisUtil.get(redisKey);
|
|
if (userId == null) {
|
|
if (userId == null) {
|
|
- return R.error("链接已过期");
|
|
|
|
|
|
+ return R.fail("链接已过期");
|
|
}
|
|
}
|
|
WebsiteUser websiteUser = websiteUserService.get(userId);
|
|
WebsiteUser websiteUser = websiteUserService.get(userId);
|
|
- updatePass(websiteUser, dto.getNewPassword(), dto.getConfirmNewPassword());
|
|
|
|
|
|
+ R<String> updatePass = updatePass(websiteUser, dto.getNewPassword(), dto.getConfirmNewPassword());
|
|
|
|
+ if (updatePass.getCode() != R.SUCCESS) {
|
|
|
|
+ return R.fail(updatePass.getMsg());
|
|
|
|
+ }
|
|
redisUtil.del(redisKey);
|
|
redisUtil.del(redisKey);
|
|
WebsiteUser newWebsiteUser = new WebsiteUser();
|
|
WebsiteUser newWebsiteUser = new WebsiteUser();
|
|
newWebsiteUser.setPassword(dto.getNewPassword());
|
|
newWebsiteUser.setPassword(dto.getNewPassword());
|
|
@@ -199,20 +202,20 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
*/
|
|
*/
|
|
@PostMapping(value = "getWuValidCode")
|
|
@PostMapping(value = "getWuValidCode")
|
|
@ApiOperation(value = "获取找回密码的邮件验证码")
|
|
@ApiOperation(value = "获取找回密码的邮件验证码")
|
|
- public Map<String, Object> getWuValidCode(WebsiteUserDto dto) {
|
|
|
|
|
|
+ public R<String> getWuValidCode(WebsiteUserDto dto) {
|
|
String email = dto.getEmail();
|
|
String email = dto.getEmail();
|
|
if (StringUtils.isEmpty(email)) {
|
|
if (StringUtils.isEmpty(email)) {
|
|
- return R.error("邮箱为空");
|
|
|
|
|
|
+ return R.fail("邮箱为空");
|
|
}
|
|
}
|
|
WebsiteUser websiteUser = websiteUserService.findEmail(email);
|
|
WebsiteUser websiteUser = websiteUserService.findEmail(email);
|
|
if (websiteUser == null) {
|
|
if (websiteUser == null) {
|
|
- return R.error("邮箱不存在");
|
|
|
|
|
|
+ return R.fail("邮箱不存在");
|
|
}
|
|
}
|
|
String dateKey = "wuLastDate" + email;
|
|
String dateKey = "wuLastDate" + email;
|
|
// 操作是否频繁验证, 如果离上次获取验证码小于60秒,则提示操作频繁。
|
|
// 操作是否频繁验证, 如果离上次获取验证码小于60秒,则提示操作频繁。
|
|
String date = (String) redisUtil.get(dateKey);
|
|
String date = (String) redisUtil.get(dateKey);
|
|
if (date != null && (System.currentTimeMillis()- DateUtils.parseDate(date).getTime())/(1000L) < 60L){
|
|
if (date != null && (System.currentTimeMillis()- DateUtils.parseDate(date).getTime())/(1000L) < 60L){
|
|
- return R.error("您当前操作太频繁,请稍等一会再操作!");
|
|
|
|
|
|
+ return R.fail("您当前操作太频繁,请稍等一会再操作!");
|
|
}else{
|
|
}else{
|
|
redisUtil.set(dateKey, new Date());
|
|
redisUtil.set(dateKey, new Date());
|
|
redisUtil.expire(dateKey, 60);
|
|
redisUtil.expire(dateKey, 60);
|
|
@@ -226,7 +229,7 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
// 准备邮件内容,包含重置密码链接
|
|
// 准备邮件内容,包含重置密码链接
|
|
String emailContent = "请点击以下链接重置密码: <a href='" + resetUrl + "'>" + resetUrl + "</a>";
|
|
String emailContent = "请点击以下链接重置密码: <a href='" + resetUrl + "'>" + resetUrl + "</a>";
|
|
EmailUtils.send(email, "找回密码,请点击以下链接重置密码", emailContent);
|
|
EmailUtils.send(email, "找回密码,请点击以下链接重置密码", emailContent);
|
|
- return R.ok("成功");
|
|
|
|
|
|
+ return R.ok();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -253,8 +256,8 @@ public class WebsiteUserControllerApi extends AbstractController {
|
|
*/
|
|
*/
|
|
@WebsiteAuth
|
|
@WebsiteAuth
|
|
@GetMapping(value = "getUserInfo")
|
|
@GetMapping(value = "getUserInfo")
|
|
- public WebsiteUser getUserInfo() throws Exception {
|
|
|
|
|
|
+ public R<WebsiteUser> getUserInfo() throws Exception {
|
|
String userId = getUserIdByRequest();
|
|
String userId = getUserIdByRequest();
|
|
- return websiteUserService.get(userId);
|
|
|
|
|
|
+ return R.ok(websiteUserService.get(userId));
|
|
}
|
|
}
|
|
}
|
|
}
|