1.新增重置密码
This commit is contained in:
@@ -159,7 +159,7 @@ public class RoomController {
|
||||
}
|
||||
|
||||
@Operation(summary = "查看公告")
|
||||
@GetMapping("/announcement/{id}")
|
||||
@GetMapping("/announcement")
|
||||
public ApiResult announcement(ReadAnnouncementsParam param){
|
||||
return ApiResult.success(roomService.getAnnouncement(RequestHolder.get().getUid(), param));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.hula.core.user.controller;
|
||||
|
||||
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
|
||||
import com.hula.core.user.domain.vo.req.user.LoginReq;
|
||||
import com.hula.core.user.domain.vo.req.user.LogoutReq;
|
||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
||||
@@ -49,6 +50,12 @@ public class TokenController {
|
||||
return ApiResult.success(registerReq.getEmail());
|
||||
}
|
||||
|
||||
@PostMapping("/forgotPassword")
|
||||
@Operation(summary ="忘记密码|重置密码")
|
||||
public ApiResult<Boolean> forgotPassword(@Valid @RequestBody ForgotPasswordReq forgotPasswordReq) {
|
||||
return ApiResult.success(loginService.forgotPassword(forgotPasswordReq));
|
||||
}
|
||||
|
||||
@PostMapping("/refreshToken")
|
||||
@Operation(summary ="token续签")
|
||||
public ApiResult<LoginResultVO> refreshToken(@RequestBody RefreshTokenReq refreshTokenReq) {
|
||||
|
||||
@@ -46,8 +46,8 @@ public class UserDao extends ServiceImpl<UserMapper, User> {
|
||||
updateById(update);
|
||||
}
|
||||
|
||||
public User getByName(String name) {
|
||||
return lambdaQuery().eq(User::getName, name).one();
|
||||
public User getByEmail(String email) {
|
||||
return lambdaQuery().eq(User::getEmail, email).one();
|
||||
}
|
||||
|
||||
public List<User> getMemberList() {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.hula.core.user.domain.vo.req.user;
|
||||
|
||||
import com.hula.domain.BaseEntity;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author 乾乾
|
||||
*/
|
||||
@Data
|
||||
public class ForgotPasswordReq extends BaseEntity {
|
||||
|
||||
@NotEmpty(message = "请填写邮箱")
|
||||
@Schema(description = "邮箱")
|
||||
@Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$", message = "请输入有效的邮箱地址")
|
||||
private String email;
|
||||
|
||||
@NotEmpty(message = "邮箱验证码不能为空")
|
||||
@Schema(description = "邮箱验证码")
|
||||
private String code;
|
||||
|
||||
@NotEmpty(message = "修改码非法!")
|
||||
@Schema(description = "uuid")
|
||||
private String uuid;
|
||||
|
||||
@NotEmpty(message = "请输入密码")
|
||||
private String password;
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.hula.core.user.service;
|
||||
|
||||
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
|
||||
import com.hula.core.user.domain.vo.req.user.LoginReq;
|
||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
||||
import com.hula.core.user.domain.vo.req.user.RegisterReq;
|
||||
import com.hula.core.user.domain.vo.resp.user.LoginResultVO;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* @author nyh
|
||||
@@ -39,4 +41,9 @@ public interface LoginService {
|
||||
* 退出登录
|
||||
*/
|
||||
void logout(Boolean autoLogin);
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
*/
|
||||
Boolean forgotPassword(@Valid ForgotPasswordReq forgotPasswordReq);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.hula.core.chat.service.ContactService;
|
||||
import com.hula.core.chat.service.RoomService;
|
||||
import com.hula.core.user.dao.UserDao;
|
||||
import com.hula.core.user.domain.entity.User;
|
||||
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
|
||||
import com.hula.core.user.domain.vo.req.user.LoginReq;
|
||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
||||
import com.hula.core.user.domain.vo.req.user.RegisterReq;
|
||||
@@ -78,17 +79,7 @@ public class LoginServiceImpl implements LoginService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void normalRegister(RegisterReq req) {
|
||||
String emailCode;
|
||||
Object codeObj = RedisUtils.hget("emailCode", req.getUuid());
|
||||
if (ObjectUtil.isNotNull(codeObj)) {
|
||||
emailCode = codeObj.toString();
|
||||
} else {
|
||||
throw new BizException("验证码已过期");
|
||||
}
|
||||
|
||||
if(StrUtil.isEmpty(emailCode) || !emailCode.equals(req.getCode())){
|
||||
throw new BizException("验证码错误!");
|
||||
}
|
||||
checkCode(req.getUuid(), req.getCode());
|
||||
|
||||
// 2. 检查邮箱是否已被其他用户绑定
|
||||
if (userDao.existsByEmailAndIdNot(null, req.getEmail())) {
|
||||
@@ -162,4 +153,36 @@ public class LoginServiceImpl implements LoginService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean forgotPassword(ForgotPasswordReq req) {
|
||||
// 1. 校验
|
||||
checkCode(req.getUuid(), req.getCode());
|
||||
|
||||
// 2. 修改密码
|
||||
User dbuUser = userDao.getByEmail(req.getEmail());
|
||||
User user = new User();
|
||||
user.setId(dbuUser.getId());
|
||||
user.setPassword(req.getPassword());
|
||||
return userDao.updateById(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查验证码
|
||||
* @param uuid 验证码id
|
||||
* @param code 验证码值
|
||||
*/
|
||||
private static void checkCode(String uuid, String code) {
|
||||
String emailCode;
|
||||
Object codeObj = RedisUtils.hget("emailCode", uuid);
|
||||
if (ObjectUtil.isNotNull(codeObj)) {
|
||||
emailCode = codeObj.toString();
|
||||
} else {
|
||||
throw new BizException("验证码已过期");
|
||||
}
|
||||
|
||||
if (StrUtil.isEmpty(emailCode) || !emailCode.equals(code)) {
|
||||
throw new BizException("验证码错误!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user