fix(security): create just cabine and livreur with api but create admin is just in bdd

This commit is contained in:
2026-05-18 17:35:35 +02:00
parent a8e22e63bc
commit 3dfc15cec1
2 changed files with 13 additions and 6 deletions
+12 -5
View File
@@ -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éé"})
}
+1 -1
View File
@@ -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 {