73 lines
1.5 KiB
Python
73 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.api.schemas.common import ApiMeta
|
|
|
|
|
|
class SessionUserData(BaseModel):
|
|
id: int
|
|
email: str
|
|
is_admin: bool
|
|
is_active: bool
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class AuthMeData(BaseModel):
|
|
authenticated: bool
|
|
csrf_token: str
|
|
user: SessionUserData
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class AuthMeEnvelope(BaseModel):
|
|
data: AuthMeData
|
|
meta: ApiMeta
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class CsrfBootstrapData(BaseModel):
|
|
csrf_token: str
|
|
authenticated: bool
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class CsrfBootstrapEnvelope(BaseModel):
|
|
data: CsrfBootstrapData
|
|
meta: ApiMeta
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
email: str = Field(max_length=254)
|
|
password: str = Field(min_length=8, max_length=128)
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class LoginData(BaseModel):
|
|
authenticated: bool
|
|
csrf_token: str
|
|
user: SessionUserData
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class LoginEnvelope(BaseModel):
|
|
data: LoginData
|
|
meta: ApiMeta
|
|
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
|
|
class ChangePasswordRequest(BaseModel):
|
|
current_password: str = Field(min_length=8, max_length=128)
|
|
new_password: str = Field(min_length=8, max_length=128)
|
|
confirm_password: str = Field(min_length=8, max_length=128)
|
|
|
|
model_config = ConfigDict(extra="forbid")
|