Skip to content

Commit 8cad922

Browse files
committed
feat: 이메일 인증 코드 검증 및 발송 입력 방식 Param To Body 변경
- 검색/페이징이 아닌 요청이기 때문에 RequestBody 적절 하다고 판단 - 검증 필드가 증가 한다면 RequestBody 더 좋다고 생각 하기 때문
1 parent be8c590 commit 8cad922

File tree

5 files changed

+41
-17
lines changed

5 files changed

+41
-17
lines changed

src/main/java/grep/neogulcoder/domain/users/controller/UserController.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package grep.neogulcoder.domain.users.controller;
22

3-
import grep.neogulcoder.domain.users.controller.dto.request.PasswordRequest;
4-
import grep.neogulcoder.domain.users.controller.dto.request.SignUpRequest;
5-
import grep.neogulcoder.domain.users.controller.dto.request.UpdatePasswordRequest;
3+
import grep.neogulcoder.domain.users.controller.dto.request.*;
64
import grep.neogulcoder.domain.users.controller.dto.response.AllUserResponse;
75
import grep.neogulcoder.domain.users.controller.dto.response.UserResponse;
86
import grep.neogulcoder.domain.users.exception.PasswordNotMatchException;
@@ -87,16 +85,16 @@ public ResponseEntity<ApiResponse<Void>> signUp(@Valid @RequestBody SignUpReques
8785
}
8886

8987
@PostMapping("/mail/send")
90-
public ResponseEntity<ApiResponse<Void>> sendCode(@RequestParam("email") String email) {
88+
public ResponseEntity<ApiResponse<Void>> sendCode(@Valid @RequestBody SendCodeToEmailRequest request) {
9189
LocalDateTime currentDateTime = LocalDateTime.now();
92-
mailService.sendCodeTo(email, currentDateTime);
90+
mailService.sendCodeTo(request.getEmail(), currentDateTime);
9391
return ResponseEntity.ok(ApiResponse.noContent());
9492
}
9593

9694
@PostMapping("/mail/verify")
97-
public ResponseEntity<ApiResponse<Boolean>> verifyCode(@RequestParam("email") String email, @RequestParam("code") String code) {
95+
public ResponseEntity<ApiResponse<Boolean>> verifyCode(@Valid @RequestBody EmailVerifyRequest request) {
9896
LocalDateTime currentDateTime = LocalDateTime.now();
99-
boolean verified = mailService.verifyEmailCode(email, currentDateTime);
97+
boolean verified = mailService.verifyEmailCode(request.getEmail(), currentDateTime);
10098
return ResponseEntity.ok(ApiResponse.success(verified));
10199
}
102100

src/main/java/grep/neogulcoder/domain/users/controller/UserSpecification.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package grep.neogulcoder.domain.users.controller;
22

3-
import grep.neogulcoder.domain.users.controller.dto.request.PasswordRequest;
4-
import grep.neogulcoder.domain.users.controller.dto.request.SignUpRequest;
5-
import grep.neogulcoder.domain.users.controller.dto.request.UpdatePasswordRequest;
3+
import grep.neogulcoder.domain.users.controller.dto.request.*;
64
import grep.neogulcoder.domain.users.controller.dto.response.AllUserResponse;
75
import grep.neogulcoder.domain.users.controller.dto.response.UserResponse;
86
import grep.neogulcoder.global.auth.Principal;
@@ -48,15 +46,12 @@ ResponseEntity<ApiResponse<Void>> delete(@AuthenticationPrincipal Principal prin
4846
@Operation(summary = "이메일 인증 코드 발송", description = "입력한 이메일 주소로 인증 코드를 발송합니다.")
4947
ResponseEntity<ApiResponse<Void>> sendCode(
5048
@Parameter(description = "인증 코드를 보낼 이메일 주소", required = true, example = "[email protected]")
51-
@RequestParam String email
49+
SendCodeToEmailRequest request
5250
);
5351

5452
@Operation(summary = "이메일 인증 코드 검증", description = "사용자가 입력한 인증 코드가 올바른지 검증합니다.")
5553
ResponseEntity<ApiResponse<Boolean>> verifyCode(
5654
@Parameter(description = "인증 요청한 이메일 주소", required = true, example = "[email protected]")
57-
@RequestParam String email,
58-
59-
@Parameter(description = "사용자가 입력한 인증 코드", required = true, example = "123456")
60-
@RequestParam String code
55+
EmailVerifyRequest request
6156
);
6257
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package grep.neogulcoder.domain.users.controller.dto.request;
2+
3+
import jakarta.validation.constraints.Email;
4+
import jakarta.validation.constraints.NotBlank;
5+
import lombok.Getter;
6+
7+
@Getter
8+
public class EmailVerifyRequest {
9+
10+
@NotBlank(message = "이메일은 필수입니다")
11+
@Email(message = "올바른 이메일 형식이어야 합니다")
12+
private String email;
13+
14+
public EmailVerifyRequest() {
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package grep.neogulcoder.domain.users.controller.dto.request;
2+
3+
import jakarta.validation.constraints.Email;
4+
import jakarta.validation.constraints.NotBlank;
5+
import lombok.Getter;
6+
7+
@Getter
8+
public class SendCodeToEmailRequest {
9+
10+
@NotBlank(message = "이메일은 필수입니다")
11+
@Email(message = "올바른 이메일 형식이어야 합니다")
12+
private String email;
13+
14+
public SendCodeToEmailRequest() {}
15+
16+
}

src/main/java/grep/neogulcoder/domain/users/service/MailService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class MailService {
3636
private static final int VERIFY_LIMIT_MINUTE = 5;
3737

3838
@Scheduled(cron = "0 0 0 * * * ")
39-
public void clearStores(){
39+
public void clearStores() {
4040
emailExpiredTimeMap.clear();
4141
verifiedEmailSet.clear();
4242
log.info("회원 인증 코드 저장 Map, Set Clear");
@@ -59,7 +59,6 @@ public boolean verifyEmailCode(String email, LocalDateTime currentDateTime) {
5959

6060
boolean isVerify = currentDateTime.isBefore(expiredTime);
6161
if (isVerify) {
62-
emailExpiredTimeMap.remove(email);
6362
verifiedEmailSet.add(email);
6463
}
6564
return isVerify;

0 commit comments

Comments
 (0)