Files
eryao/backend/src/v1/auth/schemas.py
T

59 lines
1.3 KiB
Python
Raw Normal View History

from __future__ import annotations
from pydantic import BaseModel, ConfigDict, Field
SUPABASE_PASSWORD_MIN_LENGTH = 6
SUPABASE_EMAIL_PATTERN = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
class OtpSendRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
email: str = Field(pattern=SUPABASE_EMAIL_PATTERN)
class EmailSessionCreateRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
email: str = Field(pattern=SUPABASE_EMAIL_PATTERN)
token: str = Field(min_length=6, max_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: str = Field(pattern=SUPABASE_EMAIL_PATTERN)
class SessionResponse(BaseModel):
access_token: str
refresh_token: str
expires_in: int
token_type: str
user: AuthUser
class UserByEmailResponse(BaseModel):
id: str
email: str = Field(pattern=SUPABASE_EMAIL_PATTERN)
created_at: str
email_confirmed_at: str | None = None
class UserByIdResponse(BaseModel):
id: str
email: str | None = None
created_at: str
email_confirmed_at: str | None = None
class OtpSendResponse(BaseModel):
email: str = Field(pattern=SUPABASE_EMAIL_PATTERN)