Skip to content

Commit 367d4d3

Browse files
authored
Merge pull request #42 from 28delivery/enhancement/41-username-password-email-validation
🩹 fix [#41] : user 회원가입 validation 적용
2 parents 2473cbf + 21fb2e9 commit 367d4d3

2 files changed

Lines changed: 17 additions & 6 deletions

File tree

src/main/java/com/sparta/spring_deep/_delivery/domain/user/controller/UserController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.springframework.security.access.prepost.PreAuthorize;
1919
import org.springframework.security.core.annotation.AuthenticationPrincipal;
2020
import org.springframework.validation.BindingResult;
21+
import org.springframework.validation.FieldError;
2122
import org.springframework.web.bind.annotation.DeleteMapping;
2223
import org.springframework.web.bind.annotation.GetMapping;
2324
import org.springframework.web.bind.annotation.PathVariable;
@@ -39,11 +40,11 @@ public class UserController {
3940
private final JwtUtil jwtUtil;
4041

4142
@PostMapping("/signup")
42-
public ResponseEntity<?> signup(@RequestBody UserDto userDto, BindingResult bindingResult) {
43+
public ResponseEntity<?> signup(@Valid @RequestBody UserDto userDto,
44+
BindingResult bindingResult) {
4345
if (bindingResult.hasErrors()) {
44-
String errorMsg = bindingResult.getFieldError("email") != null ?
45-
bindingResult.getFieldError("email").getDefaultMessage() :
46-
"Invalid input";
46+
FieldError fieldError = bindingResult.getFieldError();
47+
String errorMsg = fieldError != null ? fieldError.getDefaultMessage() : "Invalid input";
4748
logger.error("Sign up error: {}", errorMsg);
4849
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMsg);
4950
}

src/main/java/com/sparta/spring_deep/_delivery/domain/user/dto/UserDto.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,29 @@
44
import com.sparta.spring_deep._delivery.domain.user.entity.UserRole;
55
import jakarta.validation.constraints.Email;
66
import jakarta.validation.constraints.NotBlank;
7+
import jakarta.validation.constraints.Pattern;
78
import lombok.Getter;
89
import lombok.Setter;
910

1011
@Getter
1112
@Setter
1213
public class UserDto {
1314

15+
@NotBlank(message = "사용자 아이디는 필수 입력값입니다.")
16+
@Pattern(regexp = "^[a-z0-9]{4,10}$",
17+
message = "사용자 아이디는 영문 소문자, 숫자만 사용하여 4~10자리여야 합니다.")
1418
private String username;
1519

20+
@NotBlank(message = "비밀번호는 필수 입력값입니다.")
21+
@Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,15}$",
22+
message = "비밀번호는 8~15자리여야 하며, 영문 대소문자, 숫자, 특수문자를 포함해야 합니다.")
1623
private String password;
1724

18-
@Email(message = "input valid e-mail form")
19-
@NotBlank(message = "input e-mail")
25+
@NotBlank(message = "이메일은 필수 입력값입니다.")
26+
@Email(message = "올바른 이메일 형식이 아닙니다.")
27+
@Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}$",
28+
message = "이메일 형식이 올바르지 않습니다.")
29+
// 영문 대/소문자, 숫자, 특수문자, '+'는 앞의 패턴이 1회이상 반복 / @ 기호 필수 / .은 실제 점, 영문대소문자, 2~6자 길이 제한, $은 문자열의 끝이 최상위 도메인인지 체크
2030
private String email;
2131

2232
private UserRole role;

0 commit comments

Comments
 (0)