51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
from datetime import datetime
|
|
from uuid import UUID
|
|
from pydantic import ConfigDict
|
|
from fastapi import Form
|
|
|
|
from backend.core.security.security import hash_password
|
|
from backend.schemas.main_model import MainModel
|
|
|
|
class UserBase(MainModel):
|
|
username: str = Form(...)
|
|
|
|
class UserRequest(UserBase):
|
|
password: str = Form(...)
|
|
|
|
class UserCreate(UserRequest):
|
|
name: str
|
|
|
|
class UserProfile(MainModel):
|
|
name: str | None = None
|
|
password: str | None = None
|
|
is_admin: bool | None = None
|
|
is_lock: bool | None = None
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
def update_password(self):
|
|
self.password = (None if self.password is None else hash_password(self.password))
|
|
|
|
class UserSeeds(UserCreate):
|
|
is_admin: bool
|
|
|
|
class PrivateUser(UserBase):
|
|
id: UUID
|
|
name: str
|
|
is_admin: bool
|
|
is_lock: datetime
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
class ProfileResponse(UserBase):
|
|
name: str
|
|
is_admin: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
class LoginResponse(MainModel):
|
|
access_token: str
|
|
exp: int
|
|
name: str
|