30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
"""회원가입 요청 스키마."""
|
|
|
|
from pydantic import BaseModel, EmailStr, Field, model_validator
|
|
|
|
|
|
class RegisterRequest(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(min_length=8, max_length=128)
|
|
password_confirm: str = Field(min_length=8, max_length=128)
|
|
name: str = Field(min_length=1, max_length=255)
|
|
position: str | None = Field(default=None, max_length=100)
|
|
phone: str | None = Field(default=None, max_length=20)
|
|
terms_version: str = Field(min_length=1, max_length=20)
|
|
terms_agreed: bool
|
|
privacy_agreed: bool
|
|
marketing_agreed: bool = False
|
|
|
|
@model_validator(mode="after")
|
|
def validate_registration(self):
|
|
if not self.terms_agreed or not self.privacy_agreed:
|
|
raise ValueError("필수 약관 동의가 필요합니다.")
|
|
if self.password != self.password_confirm:
|
|
raise ValueError("비밀번호와 확인 비밀번호가 일치하지 않습니다.")
|
|
return self
|
|
|
|
|
|
class RegisterVerifyRequest(BaseModel):
|
|
email: EmailStr
|
|
otp_code: str = Field(pattern=r"^\d{6}$")
|