Skip to content

Commit ee24644

Browse files
committed
[Feat] #5 비밀번호 변경 기능
1 parent d6a5b03 commit ee24644

4 files changed

Lines changed: 37 additions & 6 deletions

File tree

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/auth/controller/AuthController.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.CodeCheckRequest;
44
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.MailRequest;
5+
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.PasswordRequest;
56
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.RefreshTokenRequest;
67
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.response.ReissueResponse;
78
import com.WhoIsRoom.WhoIs_Server.domain.auth.service.JwtService;
89
import com.WhoIsRoom.WhoIs_Server.domain.auth.service.MailService;
910
import com.WhoIsRoom.WhoIs_Server.domain.user.service.UserService;
11+
import com.WhoIsRoom.WhoIs_Server.global.common.resolver.CurrentUserId;
1012
import com.WhoIsRoom.WhoIs_Server.global.common.response.BaseResponse;
11-
import io.swagger.v3.oas.annotations.Operation;
1213
import jakarta.servlet.http.HttpServletRequest;
13-
import jakarta.servlet.http.HttpServletResponse;
1414
import lombok.RequiredArgsConstructor;
1515
import lombok.extern.slf4j.Slf4j;
1616
import org.springframework.web.bind.annotation.*;
@@ -52,7 +52,14 @@ public BaseResponse<Void> checkAuthCode(@RequestBody CodeCheckRequest request) {
5252

5353
@PostMapping("/email/find-password")
5454
public BaseResponse<Void> findPassword(@RequestBody MailRequest request) {
55-
userService.updateMyPassword(request);
55+
userService.sendNewPassword(request);
56+
return BaseResponse.ok(null);
57+
}
58+
59+
@PatchMapping("/password")
60+
public BaseResponse<Void> updatePassword(@CurrentUserId Long userId,
61+
@RequestBody PasswordRequest request) {
62+
userService.updateMyPassword(userId, request);
5663
return BaseResponse.ok(null);
5764
}
5865
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request;
2+
3+
import lombok.AccessLevel;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
@Getter
8+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
9+
public class PasswordRequest {
10+
private String prePassword;
11+
private String newPassword;
12+
}

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/user/service/UserService.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.WhoIsRoom.WhoIs_Server.domain.user.service;
22

33
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.MailRequest;
4+
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.PasswordRequest;
45
import com.WhoIsRoom.WhoIs_Server.domain.auth.service.MailService;
56
import com.WhoIsRoom.WhoIs_Server.domain.user.dto.request.SignupRequest;
67
import com.WhoIsRoom.WhoIs_Server.domain.user.model.Role;
@@ -44,10 +45,21 @@ public void signUp(SignupRequest request) {
4445
}
4546

4647
@Transactional
47-
public void updateMyPassword(MailRequest request) {
48+
public void sendNewPassword(MailRequest request) {
4849
User user = userRepository.findByEmail(request.getEmail())
4950
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
5051
String newPassword = mailService.sendPasswordMail(request);
5152
user.setPassword(passwordEncoder.encode(newPassword));
5253
}
54+
55+
@Transactional
56+
public void updateMyPassword(Long userId, PasswordRequest request) {
57+
User user = userRepository.findById(userId)
58+
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
59+
60+
if (!passwordEncoder.matches(request.getPrePassword(), user.getPassword())) {
61+
throw new BusinessException(ErrorCode.INVALID_PASSWORD);
62+
}
63+
user.setPassword(passwordEncoder.encode(request.getNewPassword()));
64+
}
5365
}

src/main/java/com/WhoIsRoom/WhoIs_Server/global/common/response/ErrorCode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public enum ErrorCode{
4141
UNSUPPORTED_TOKEN_TYPE(614, HttpStatus.BAD_REQUEST.value(),"지원되지 않는 토큰 형식입니다."),
4242
MALFORMED_TOKEN_TYPE(615, HttpStatus.BAD_REQUEST.value(),"인증 토큰이 올바르게 구성되지 않았습니다."),
4343
INVALID_SIGNATURE_JWT(616, HttpStatus.BAD_REQUEST.value(), "인증 시그니처가 올바르지 않습니다"),
44-
INVALID_ID_OR_PASSWORD(617, HttpStatus.BAD_REQUEST.value(), "이메일 또는 비밀번호가 올바르지 않습니다.");
45-
44+
INVALID_ID_OR_PASSWORD(617, HttpStatus.BAD_REQUEST.value(), "이메일 또는 비밀번호가 올바르지 않습니다."),
45+
INVALID_PASSWORD(618, HttpStatus.BAD_REQUEST.value(), "기존 비밀번호가 유효하지 않습니다");
4646

4747
private final int code;
4848
private final int httpStatus;

0 commit comments

Comments
 (0)