diff --git a/src/main/java/com/cmc/suppin/member/controller/dto/MemberRequestDTO.java b/src/main/java/com/cmc/suppin/member/controller/dto/MemberRequestDTO.java index 8b21f69..91b4604 100644 --- a/src/main/java/com/cmc/suppin/member/controller/dto/MemberRequestDTO.java +++ b/src/main/java/com/cmc/suppin/member/controller/dto/MemberRequestDTO.java @@ -22,7 +22,7 @@ public static class JoinDTO { private String name; @NotBlank(message = "비밀번호를 입력해주세요") - @Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,16}", message = "비밀번호는 8~16자 영문, 숫자, 특수문자를 사용하세요.") + @Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,20}", message = "비밀번호는 8~20자 영문, 숫자, 특수문자를 사용하세요.") private String password; @NotBlank(message = "이메일을 입력해주세요") diff --git a/src/main/java/com/cmc/suppin/member/service/command/MemberCommandServiceImpl.java b/src/main/java/com/cmc/suppin/member/service/command/MemberCommandServiceImpl.java index 64caa7c..e5223fb 100644 --- a/src/main/java/com/cmc/suppin/member/service/command/MemberCommandServiceImpl.java +++ b/src/main/java/com/cmc/suppin/member/service/command/MemberCommandServiceImpl.java @@ -33,6 +33,12 @@ public Member join(MemberRequestDTO.JoinDTO request) { throw new IllegalArgumentException("이미 존재하는 유저입니다."); } + // 비밀번호 조건 검증 + String password = request.getPassword(); + if (!isValidPassword(password)) { + throw new IllegalArgumentException("비밀번호는 8~20자 영문, 숫자, 특수문자를 사용해야 합니다."); + } + // DTO를 Entity로 변환 Member member = memberConverter.toEntity(request, bCryptPasswordEncoder); @@ -42,6 +48,11 @@ public Member join(MemberRequestDTO.JoinDTO request) { return member; } + // 비밀번호 조건 검증 메서드 + private boolean isValidPassword(String password) { + return password.matches("(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,20}"); + } + /** * ID 중복 확인 */