Files
piaps-course-work-university/backend/app/auth/schemas.py

56 lines
1.6 KiB
Python

from typing import Self
from pydantic import (
BaseModel,
ConfigDict,
EmailStr,
Field,
model_validator,
)
from app.auth.utils import get_password_hash
class EmailModel(BaseModel):
email: EmailStr = Field(description="Электронная почта")
model_config = ConfigDict(from_attributes=True)
class UserBase(EmailModel):
first_name: str = Field(
min_length=3, max_length=50, description="Имя, от 3 до 50 символов"
)
last_name: str = Field(
min_length=3, max_length=50, description="Фамилия, от 3 до 50 символов"
)
class SUserRegister(UserBase):
password: str = Field(
min_length=5, max_length=50, description="Пароль, от 5 до 50 знаков"
)
confirm_password: str = Field(
min_length=5, max_length=50, description="Повторите пароль"
)
@model_validator(mode="after")
def check_password(self) -> Self:
if self.password != self.confirm_password:
raise ValueError("Пароли не совпадают")
self.password = get_password_hash(
self.password
) # хешируем пароль до сохранения в базе данных
return self
class SUserAddDB(UserBase):
password: str = Field(min_length=5, description="Пароль в формате HASH-строки")
class SUserAuth(EmailModel):
password: str = Field(
min_length=5, max_length=50, description="Пароль, от 5 до 50 знаков"
)
class SUserInfo(UserBase):
id: int = Field(description="Идентификатор пользователя")