Spaces:
Sleeping
Sleeping
| # 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 | |