fix(security): create just cabine and livreur with api but create admin is just in bdd
This commit is contained in:
@@ -825,18 +825,25 @@ func CreateUser(c *gin.Context) {
|
|||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Erreur de liaison JSON"})
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Erreur de liaison JSON"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
userRole := c.GetString("role")
|
if c.GetString("role") != "admin" {
|
||||||
if userRole != "admin" {
|
|
||||||
c.JSON(http.StatusForbidden, gin.H{"error": "Seul un administrateur peut créer des utilisateurs"})
|
c.JSON(http.StatusForbidden, gin.H{"error": "Seul un administrateur peut créer des utilisateurs"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err := database.CreateUser(&user)
|
if user.Role == "admin" {
|
||||||
if err != nil {
|
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)
|
log.Printf("❌ [CREATE_USER] Erreur: %v", err)
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Erreur création"})
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "Erreur création"})
|
||||||
return
|
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éé"})
|
c.JSON(http.StatusCreated, gin.H{"message": "Utilisateur créé"})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ type RegisterClientRequest struct {
|
|||||||
type RegisterAdminRequest struct {
|
type RegisterAdminRequest struct {
|
||||||
Username string `json:"username" binding:"required,min=3,max=50"`
|
Username string `json:"username" binding:"required,min=3,max=50"`
|
||||||
Password string `json:"password" binding:"required,min=8"`
|
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 {
|
type LoginResponse struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user