260706_2_로그인 인증 검토
This commit is contained in:
@@ -1,34 +1,26 @@
|
||||
"""회원가입 요청 스키마."""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
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)
|
||||
account_type: Literal["MASTER", "MEMBER"]
|
||||
company_id: int | None = Field(default=None, ge=1)
|
||||
company_name: str | None = Field(default=None, max_length=255)
|
||||
business_number: str | None = Field(default=None, max_length=20)
|
||||
phone_number: str | None = Field(default=None, max_length=20)
|
||||
address: str | None = Field(default=None, max_length=255)
|
||||
representative_name: str | None = Field(default=None, max_length=100)
|
||||
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_account_type(self):
|
||||
def validate_registration(self):
|
||||
if not self.terms_agreed or not self.privacy_agreed:
|
||||
raise ValueError("필수 약관 동의가 필요합니다.")
|
||||
if self.account_type == "MASTER" and not self.company_name:
|
||||
raise ValueError("새 회사명은 필수입니다.")
|
||||
if self.account_type == "MEMBER" and self.company_id is None:
|
||||
raise ValueError("참여할 회사를 선택해야 합니다.")
|
||||
if self.password != self.password_confirm:
|
||||
raise ValueError("비밀번호와 확인 비밀번호가 일치하지 않습니다.")
|
||||
return self
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user