hamba-ho's picture
feat: Version finale de l'application full stack avec RAG amélioré
c2f46ba
# backend/models/user.py
import enum
from sqlalchemy import Column, Integer, String, Enum
from config.database import Base
from pydantic import BaseModel
# Crée un type personnalisé pour le rôle, garantissant que seules ces valeurs sont acceptées
class RoleEnum(enum.Enum):
student = "étudiant"
teacher = "enseignant"
admin = "administrateur"
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String, unique=True, index=True, nullable=False)
# On ne stocke jamais le mot de passe en clair, seulement sa version hachée
hashed_password = Column(String, nullable=False)
role = Column(Enum(RoleEnum), nullable=False, default=RoleEnum.student)
# Modèle pour la création d'un utilisateur (ce que l'API reçoit)
class UserCreate(BaseModel):
email: str
password: str
# Modèle pour la réponse de l'API (ce que l'on renvoie, sans le mot de passe)
class UserResponse(BaseModel):
id: int
email: str
role: RoleEnum
class Config:
from_attributes = True
# Modèle pour le jeton JWT
class Token(BaseModel):
access_token: str
token_type: str