63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
from pydantic import BaseModel, field_validator
|
|
from typing import Optional
|
|
|
|
class CreateUserDTO(BaseModel):
|
|
"""회원 가입 DTO"""
|
|
|
|
# 필수
|
|
id: str
|
|
password: str
|
|
|
|
# 선택
|
|
user_name: Optional[str] = None
|
|
|
|
@field_validator("id")
|
|
@classmethod
|
|
def validate_id(cls, v):
|
|
if not v or len(v.strip()) == 0:
|
|
raise ValueError("ID는 필수입니다")
|
|
if len(v) < 3 or len(v) > 50:
|
|
raise ValueError("ID는 3-50자 사이여야 합니다")
|
|
return v.strip()
|
|
|
|
@field_validator("password")
|
|
@classmethod
|
|
def validate_password(cls, v):
|
|
if not v or len(v) < 6:
|
|
raise ValueError("비밀번호는 최소 6자 이상이어야 합니다")
|
|
return v
|
|
|
|
# 자동 형변환 방지
|
|
class Config:
|
|
strict = True
|
|
|
|
|
|
class CheckUserDTO(BaseModel):
|
|
"""로그인 확인 DTO"""
|
|
|
|
# 필수
|
|
id: str
|
|
password: str
|
|
|
|
@field_validator("id", "password")
|
|
@classmethod
|
|
def validate_required(cls, v):
|
|
if not v or len(v.strip()) == 0:
|
|
raise ValueError("필수 항목입니다")
|
|
return v.strip()
|
|
|
|
# 자동 형변환 방지
|
|
class Config:
|
|
strict = True
|
|
|
|
|
|
class CreateUserIpsDTO(BaseModel):
|
|
"""사용자 IP 저장 DTO"""
|
|
# 필수
|
|
user_uuid: str
|
|
user_ip: str
|
|
user_agent: str
|
|
|
|
# 자동 형변환 방지
|
|
class Config:
|
|
strict = True |