Files
saas_backend/app/schemas/auth/auth_schema.py
T
2026-02-16 15:32:05 +05:30

76 lines
1.8 KiB
Python

from pydantic import BaseModel, EmailStr, Field
from typing import Optional, List
from datetime import datetime
import uuid
class UserBase(BaseModel):
email: EmailStr
first_name: str
last_name: Optional[str] = None
phone_number: Optional[str] = None
status: Optional[str] = "active"
class UserSignup(UserBase):
password: str = Field(..., min_length=8)
class UserSignin(BaseModel):
email: EmailStr
password: str
class AccessInRole(BaseModel):
id: str
access_code: str
category: str
name: str
class RoleInUser(BaseModel):
id: uuid.UUID
role_name: str
accesses: List[str] = []
class UserResponse(UserBase):
id: uuid.UUID
tenant_id: Optional[uuid.UUID] = None
tenant_name: Optional[str] = None
tenant_logo_url: Optional[str] = None
created_at: datetime
updated_at: datetime
role: Optional[RoleInUser] = None
class Config:
from_attributes = True
class UserUpdate(BaseModel):
first_name: Optional[str] = None
last_name: Optional[str] = None
phone_number: Optional[str] = None
email: Optional[EmailStr] = None
status: Optional[str] = None
class TokenResponse(BaseModel):
access_token: str
refresh_token: str
token_type: str = "bearer"
user: UserResponse
class RefreshTokenRequest(BaseModel):
refresh_token: str
class ResetPassword(BaseModel):
old_password: str
new_password: str = Field(..., min_length=8)
class ForgotPasswordRequest(BaseModel):
email: EmailStr
class VerifyOTPRequest(BaseModel):
email: EmailStr
otp: str = Field(..., min_length=6, max_length=6, pattern=r'^\d{6}$')
class ResetPasswordWithOTP(BaseModel):
email: EmailStr
otp: str = Field(..., min_length=6, max_length=6, pattern=r'^\d{6}$')
new_password: str = Field(..., min_length=8)