1+ package hackathon .soa .domain .auth .dto ;
2+
3+ import jakarta .validation .constraints .*;
4+ import lombok .AllArgsConstructor ;
5+ import lombok .Builder ;
6+ import lombok .Getter ;
7+ import lombok .NoArgsConstructor ;
8+
9+ public class AuthRequestDTO {
10+ @ Builder
11+ @ Getter
12+ @ NoArgsConstructor
13+ @ AllArgsConstructor
14+ public static class SignupRequestDTO {
15+
16+ @ NotBlank (message = "아이디는 필수입니다" )
17+ @ Size (min = 4 , max = 20 , message = "아이디는 4~20자 사이여야 합니다" )
18+ @ Pattern (regexp = "^[a-zA-Z0-9]+$" , message = "아이디는 영문자와 숫자만 가능합니다" )
19+ private String appId ;
20+
21+ @ NotBlank (message = "비밀번호는 필수입니다" )
22+ @ Size (min = 8 , max = 20 , message = "비밀번호는 8~20자 사이여야 합니다" )
23+ @ Pattern (regexp = "^(?=.*[a-zA-Z])(?=.*\\ d)(?=.*[@$!%*?&])[A-Za-z\\ d@$!%*?&]+$" ,
24+ message = "비밀번호는 영문자, 숫자, 특수문자를 포함해야 합니다" )
25+ private String password ;
26+
27+ @ NotBlank (message = "이름은 필수입니다" )
28+ @ Size (min = 2 , max = 10 , message = "이름은 2~10자 사이여야 합니다" )
29+ private String name ;
30+
31+ @ NotBlank (message = "닉네임은 필수입니다" )
32+ @ Size (min = 2 , max = 15 , message = "닉네임은 2~15자 사이여야 합니다" )
33+ private String nickname ;
34+
35+ @ NotBlank (message = "전화번호는 필수입니다" )
36+ @ Pattern (regexp = "^01[0-9]-\\ d{4}-\\ d{4}$" , message = "전화번호 형식이 올바르지 않습니다 (ex. 010-1234-5678)" )
37+ private String phoneNumber ;
38+
39+ @ NotBlank (message = "생년월일은 필수입니다" )
40+ @ Pattern (regexp = "^\\ d{8}$" , message = "생년월일 형식이 올바르지 않습니다 (ex. 20010528)" )
41+ private String birth ;
42+
43+ @ NotBlank (message = "성별은 필수입니다" )
44+ @ Pattern (regexp = "^(남성|여성)$" , message = "성별은 '남성' 또는 '여성'이어야 합니다" )
45+ private String gender ;
46+
47+ @ NotBlank (message = "장애 유형은 필수입니다" )
48+ @ Pattern (regexp = "^\\ [.*\\ ]$" , message = "장애 유형은 JSON 배열 형식이어야 합니다" )
49+ private String disabilityType ;
50+
51+ @ NotNull (message = "프로필 이미지는 필수입니다" )
52+ private Integer profileImage ;
53+ }
54+ }
0 commit comments