76 lines
1.6 KiB
Python
76 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, ConfigDict, EmailStr, Field
|
|
|
|
|
|
class VerificationCreateRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
username: str = Field(min_length=3, max_length=30)
|
|
email: EmailStr
|
|
password: str = Field(min_length=6)
|
|
redirect_to: str | None = None
|
|
invite_code: str | None = Field(
|
|
default=None,
|
|
min_length=8,
|
|
max_length=8,
|
|
pattern=r"^[ABCDEFGHJKMNPQRSTUVWXYZ23456789]{8}$",
|
|
)
|
|
|
|
|
|
class VerificationResendRequest(BaseModel):
|
|
email: EmailStr
|
|
|
|
|
|
class VerificationVerifyRequest(BaseModel):
|
|
email: EmailStr
|
|
token: str = Field(pattern=r"^\d{6}$")
|
|
|
|
|
|
class SessionCreateRequest(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(min_length=6)
|
|
|
|
|
|
class SessionRefreshRequest(BaseModel):
|
|
refresh_token: str = Field(min_length=1)
|
|
|
|
|
|
class SessionDeleteRequest(BaseModel):
|
|
refresh_token: str = Field(min_length=1)
|
|
|
|
|
|
class AuthUser(BaseModel):
|
|
id: str
|
|
email: EmailStr
|
|
|
|
|
|
class SessionResponse(BaseModel):
|
|
access_token: str
|
|
refresh_token: str
|
|
expires_in: int
|
|
token_type: str
|
|
user: AuthUser
|
|
|
|
|
|
class UserByEmailResponse(BaseModel):
|
|
id: str
|
|
email: EmailStr
|
|
created_at: str
|
|
email_confirmed_at: str | None = None
|
|
|
|
|
|
class VerificationCreateResponse(BaseModel):
|
|
email: EmailStr
|
|
|
|
|
|
class PasswordResetRequest(BaseModel):
|
|
email: EmailStr
|
|
redirect_to: str | None = None
|
|
|
|
|
|
class PasswordResetConfirmRequest(BaseModel):
|
|
email: EmailStr
|
|
token: str = Field(pattern=r"^\d{6}$")
|
|
new_password: str = Field(min_length=6)
|