ilyass yani
feat: reset password via EmailJS (front) + nettoyage email backend
d943bff
Raw
History Blame Contribute Delete
1.51 kB
from pydantic import BaseModel, EmailStr, Field
from typing import Optional
from enum import Enum
class UserRole(str, Enum):
admin = "admin"
recruiter = "recruiter"
candidate = "candidate"
class UserRolePublic(str, Enum):
"""Roles available for public self-registration — admin is excluded."""
recruiter = "recruiter"
candidate = "candidate"
class UserCreate(BaseModel):
"""Schema for user registration — admin role is not allowed."""
email: EmailStr
password: str = Field(..., min_length=6)
full_name: str = Field(..., min_length=2)
role: UserRolePublic = UserRolePublic.recruiter
class UserLogin(BaseModel):
"""Schema for user login"""
email: EmailStr
password: str
class TokenData(BaseModel):
"""JWT token payload data"""
sub: str # user email
user_id: int
class Token(BaseModel):
"""Response for login/register endpoints"""
access_token: str
token_type: str = "bearer"
user: "UserResponse"
class UserResponse(BaseModel):
"""User info response"""
id: int
email: str
full_name: str
role: UserRole
created_at: str
class Config:
from_attributes = True
class ForgotPasswordRequest(BaseModel):
email: EmailStr
class ResetPasswordRequest(BaseModel):
token: str
new_password: str = Field(..., min_length=6)
class MessageResponse(BaseModel):
message: str
class ForgotPasswordResponse(BaseModel):
message: str
reset_link: Optional[str] = None