chore: fix vulenrability
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user