chore: fix vulenrability

This commit is contained in:
2026-03-12 21:59:18 +01:00
parent f5902665ec
commit 9cb50bb625
12 changed files with 146 additions and 153 deletions
+13 -29
View File
@@ -227,12 +227,11 @@ func UpdateDeliveryStatus(c *gin.Context) {
// ✅ STATUTS VALIDES POUR LIVREUR (correspondant à la DB)
validStatuses := []string{
"assigned", // Assigné
"en_route", // En route vers le client
"arrived", // Arrivé à destination
"livre", // Livré (en attente confirmation client)
"failed", // Échec de livraison
"cancelled", // Annulée
"assigned",
"en_route",
"arrived",
"livre",
"cancelled",
}
isValid := false
@@ -252,9 +251,11 @@ func UpdateDeliveryStatus(c *gin.Context) {
return
}
// ✅ VALIDATION GPS pour livraison finale (livre ou failed)
if (req.Status == "livre" || req.Status == "failed") &&
req.Latitude != 0 && req.Longitude != 0 {
if req.Status == "livre" {
if req.Latitude == 0 || req.Longitude == 0 {
c.JSON(http.StatusBadRequest, gin.H{"error": "Coordonnées GPS requises pour confirmer la livraison"})
return
}
destLat, _ := command["dest_latitude"].(float64)
destLon, _ := command["dest_longitude"].(float64)
@@ -265,10 +266,9 @@ func UpdateDeliveryStatus(c *gin.Context) {
if distance > 100 {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Vous êtes trop loin de la destination",
"required_distance": 100,
"current_distance": fmt.Sprintf("%.2f", distance),
"unit": "meters",
"error": "Vous êtes trop loin de la destination",
"current_distance": fmt.Sprintf("%.2f", distance),
"unit": "meters",
})
return
}
@@ -374,8 +374,6 @@ func UpdateDeliveryStatus(c *gin.Context) {
clientMsg = fmt.Sprintf("🛵 Votre livreur est là ! Il sera chez vous dans 5 minutes (commande #%d)", commandID)
case "livre":
clientMsg = fmt.Sprintf("Votre commande #%d a été livrée. Merci !", commandID)
case "failed":
clientMsg = fmt.Sprintf("Échec de livraison pour la commande #%d", commandID)
case "cancelled":
clientMsg = fmt.Sprintf("Votre commande #%d a été annulée par le livreur", commandID)
}
@@ -391,19 +389,6 @@ func UpdateDeliveryStatus(c *gin.Context) {
log.Printf("📦 Livraison marquée 'livre' - Optimisation queue...")
database.CompleteDeliveryAndProcessNext(usernameStr, commandID)
case "failed":
// Échec de livraison - Optimiser la queue
log.Printf("❌ Livraison échouée - Optimisation queue...")
database.CompleteDeliveryAndProcessNext(usernameStr, commandID)
// Créer un problème de livraison
database.CreateDeliveryIssue(
commandID,
"delivery_failed",
fmt.Sprintf("Échec de livraison: %s", req.Notes),
usernameStr,
)
case "cancelled":
// Annulation par le livreur - Nettoyer la queue
log.Printf("🚫 Livraison annulée par livreur - Nettoyage queue cmd %d", commandID)
@@ -461,7 +446,6 @@ func getDeliveryStatusMessage(status string) string {
"en_route": "En route vers le client",
"arrived": "Arrivé à destination",
"livre": "Livraison effectuée",
"failed": "Échec de livraison",
"cancelled": "Livraison annulée",
}
if msg, ok := messages[status]; ok {