260706_1_계정, 로그인, 보안 초안 작성

This commit is contained in:
2026-07-07 19:17:13 +09:00
parent 404941c47a
commit f8633bb1fe
4696 changed files with 6110 additions and 642171 deletions
+37
View File
@@ -0,0 +1,37 @@
"""회원가입 요청 스키마."""
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)
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)
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):
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("참여할 회사를 선택해야 합니다.")
return self
class RegisterVerifyRequest(BaseModel):
email: EmailStr
otp_code: str = Field(pattern=r"^\d{6}$")