1.新增重置密码
This commit is contained in:
@@ -159,7 +159,7 @@ public class RoomController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "查看公告")
|
@Operation(summary = "查看公告")
|
||||||
@GetMapping("/announcement/{id}")
|
@GetMapping("/announcement")
|
||||||
public ApiResult announcement(ReadAnnouncementsParam param){
|
public ApiResult announcement(ReadAnnouncementsParam param){
|
||||||
return ApiResult.success(roomService.getAnnouncement(RequestHolder.get().getUid(), param));
|
return ApiResult.success(roomService.getAnnouncement(RequestHolder.get().getUid(), param));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.hula.core.user.controller;
|
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.LoginReq;
|
||||||
import com.hula.core.user.domain.vo.req.user.LogoutReq;
|
import com.hula.core.user.domain.vo.req.user.LogoutReq;
|
||||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
||||||
@@ -49,6 +50,12 @@ public class TokenController {
|
|||||||
return ApiResult.success(registerReq.getEmail());
|
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")
|
@PostMapping("/refreshToken")
|
||||||
@Operation(summary ="token续签")
|
@Operation(summary ="token续签")
|
||||||
public ApiResult<LoginResultVO> refreshToken(@RequestBody RefreshTokenReq refreshTokenReq) {
|
public ApiResult<LoginResultVO> refreshToken(@RequestBody RefreshTokenReq refreshTokenReq) {
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ public class UserDao extends ServiceImpl<UserMapper, User> {
|
|||||||
updateById(update);
|
updateById(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getByName(String name) {
|
public User getByEmail(String email) {
|
||||||
return lambdaQuery().eq(User::getName, name).one();
|
return lambdaQuery().eq(User::getEmail, email).one();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> getMemberList() {
|
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;
|
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.LoginReq;
|
||||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
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.req.user.RegisterReq;
|
||||||
import com.hula.core.user.domain.vo.resp.user.LoginResultVO;
|
import com.hula.core.user.domain.vo.resp.user.LoginResultVO;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author nyh
|
* @author nyh
|
||||||
@@ -39,4 +41,9 @@ public interface LoginService {
|
|||||||
* 退出登录
|
* 退出登录
|
||||||
*/
|
*/
|
||||||
void logout(Boolean autoLogin);
|
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.chat.service.RoomService;
|
||||||
import com.hula.core.user.dao.UserDao;
|
import com.hula.core.user.dao.UserDao;
|
||||||
import com.hula.core.user.domain.entity.User;
|
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.LoginReq;
|
||||||
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
|
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.req.user.RegisterReq;
|
||||||
@@ -78,17 +79,7 @@ public class LoginServiceImpl implements LoginService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void normalRegister(RegisterReq req) {
|
public void normalRegister(RegisterReq req) {
|
||||||
String emailCode;
|
checkCode(req.getUuid(), req.getCode());
|
||||||
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("验证码错误!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. 检查邮箱是否已被其他用户绑定
|
// 2. 检查邮箱是否已被其他用户绑定
|
||||||
if (userDao.existsByEmailAndIdNot(null, req.getEmail())) {
|
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