diff --git a/backend/gestion/handlers/auth.go b/backend/gestion/handlers/auth.go index e96d47c2..ff51915e 100644 --- a/backend/gestion/handlers/auth.go +++ b/backend/gestion/handlers/auth.go @@ -825,18 +825,25 @@ func CreateUser(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"error": "Erreur de liaison JSON"}) return } - userRole := c.GetString("role") - if userRole != "admin" { + if c.GetString("role") != "admin" { c.JSON(http.StatusForbidden, gin.H{"error": "Seul un administrateur peut créer des utilisateurs"}) return } - err := database.CreateUser(&user) - if err != nil { + if user.Role == "admin" { + c.JSON(http.StatusForbidden, gin.H{"error": "La création d'un compte administrateur n'est pas autorisée via l'application"}) + return + } + if user.Role != "livreur" && user.Role != "cabine" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Rôle invalide, valeurs acceptées : livreur, cabine"}) + return + } + + if err := database.CreateUser(&user); err != nil { log.Printf("❌ [CREATE_USER] Erreur: %v", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Erreur création"}) return } - log.Printf("✅ [CREATE_USER] Utilisateur %d créé", user.ID) + log.Printf("✅ [CREATE_USER] Utilisateur %s (%s) créé", user.Username, user.Role) c.JSON(http.StatusCreated, gin.H{"message": "Utilisateur créé"}) } diff --git a/backend/gestion/models/auth.go b/backend/gestion/models/auth.go index 990f8853..3f8a344e 100644 --- a/backend/gestion/models/auth.go +++ b/backend/gestion/models/auth.go @@ -38,7 +38,7 @@ type RegisterClientRequest struct { type RegisterAdminRequest struct { Username string `json:"username" binding:"required,min=3,max=50"` Password string `json:"password" binding:"required,min=8"` - Role string `json:"role" binding:"required,oneof=admin cabine livreur"` + Role string `json:"role" binding:"required,oneof=cabine livreur"` } type LoginResponse struct {