2026-02-05 15:13:06 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, EmailStr, Field
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class VerificationCreateRequest(BaseModel):
|
2026-02-25 10:20:43 +08:00
|
|
|
username: str = Field(min_length=3, max_length=30)
|
2026-02-05 15:13:06 +08:00
|
|
|
email: EmailStr
|
|
|
|
|
password: str = Field(min_length=6)
|
2026-02-24 16:38:30 +08:00
|
|
|
redirect_to: str | None = None
|
2026-02-05 15:13:06 +08:00
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class VerificationResendRequest(BaseModel):
|
2026-02-25 13:34:02 +08:00
|
|
|
email: EmailStr
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class VerificationVerifyRequest(BaseModel):
|
2026-02-25 13:34:02 +08:00
|
|
|
email: EmailStr
|
2026-02-26 13:33:02 +08:00
|
|
|
token: str = Field(pattern=r"^\d{6}$")
|
2026-02-25 13:34:02 +08:00
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class SessionCreateRequest(BaseModel):
|
2026-02-05 15:13:06 +08:00
|
|
|
email: EmailStr
|
|
|
|
|
password: str = Field(min_length=6)
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class SessionRefreshRequest(BaseModel):
|
2026-02-05 15:13:06 +08:00
|
|
|
refresh_token: str = Field(min_length=1)
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class SessionDeleteRequest(BaseModel):
|
2026-02-05 15:13:06 +08:00
|
|
|
refresh_token: str = Field(min_length=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AuthUser(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
email: EmailStr
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class SessionResponse(BaseModel):
|
2026-02-05 15:13:06 +08:00
|
|
|
access_token: str
|
|
|
|
|
refresh_token: str
|
|
|
|
|
expires_in: int
|
|
|
|
|
token_type: str
|
|
|
|
|
user: AuthUser
|
2026-02-24 16:38:30 +08:00
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class UserByEmailResponse(BaseModel):
|
2026-02-25 10:20:43 +08:00
|
|
|
id: str
|
|
|
|
|
email: EmailStr
|
|
|
|
|
created_at: str
|
|
|
|
|
email_confirmed_at: str | None = None
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 13:33:02 +08:00
|
|
|
class VerificationCreateResponse(BaseModel):
|
2026-02-25 13:34:02 +08:00
|
|
|
email: EmailStr
|
2026-02-24 16:38:30 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class PasswordResetRequest(BaseModel):
|
|
|
|
|
email: EmailStr
|
|
|
|
|
redirect_to: str | None = None
|
|
|
|
|
|
|
|
|
|
|
2026-02-27 15:22:42 +08:00
|
|
|
class PasswordResetConfirmRequest(BaseModel):
|
|
|
|
|
email: EmailStr
|
|
|
|
|
token: str = Field(pattern=r"^\d{6}$")
|
|
|
|
|
new_password: str = Field(min_length=6)
|
|
|
|
|
|
|
|
|
|
|
2026-02-24 16:38:30 +08:00
|
|
|
class PasswordResetResponse(BaseModel):
|
|
|
|
|
message: str = "Password reset email sent"
|