- Optimisation des listes de passages (user/admin) - Amélioration du flux de création avec validation temps réel - Amélioration du flux de consultation avec export multi-formats - Amélioration du flux de modification avec suivi des changements - Ajout de la génération PDF pour les reçus - Migration de la structure des uploads - Implémentation de la file d'attente d'emails - Ajout des permissions de suppression de passages - Corrections de bugs et optimisations performances 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.8 KiB
3.8 KiB
API DELETE /passages/{id} - Documentation des permissions
📋 Endpoint
DELETE /api/passages/{id}
🔒 Authentification
- Requise : OUI (Bearer token)
- Session : Doit être valide
📊 Logique de permissions
Règles par rôle :
| fk_role | Description | Peut supprimer ? | Conditions |
|---|---|---|---|
| 1 | Membre | ✅ Conditionnel | Si entites.chk_user_delete_pass = 1 |
| 2 | Admin amicale | ✅ OUI | Toujours autorisé |
| 3+ | Super admin | ✅ OUI | Toujours autorisé |
Détail du contrôle pour les membres (fk_role = 1) :
-- L'API vérifie :
SELECT chk_user_delete_pass
FROM entites
WHERE id = {user.fk_entite}
-- Si chk_user_delete_pass = 0 → Erreur 403
-- Si chk_user_delete_pass = 1 → Continue
🔄 Flux de vérification
graph TD
A[DELETE /passages/{id}] --> B{Utilisateur authentifié ?}
B -->|Non| C[Erreur 401]
B -->|Oui| D{Récupérer fk_role}
D --> E{fk_role = 1 ?}
E -->|Non| F[Autorisé - Admin]
E -->|Oui| G{Vérifier chk_user_delete_pass}
G -->|= 0| H[Erreur 403 - Non autorisé]
G -->|= 1| F
F --> I{Passage existe ?}
I -->|Non| J[Erreur 404]
I -->|Oui| K{Passage appartient à l'entité ?}
K -->|Non| L[Erreur 404]
K -->|Oui| M[Soft delete : chk_active = 0]
M --> N[Succès 200]
📝 Réponses
✅ Succès (200)
{
"status": "success",
"message": "Passage supprimé avec succès"
}
❌ Erreur 401 - Non authentifié
{
"status": "error",
"message": "Vous devez être connecté pour effectuer cette action"
}
❌ Erreur 403 - Permission refusée (membre sans autorisation)
{
"status": "error",
"message": "Vous n'avez pas l'autorisation de supprimer des passages"
}
❌ Erreur 404 - Passage non trouvé
{
"status": "error",
"message": "Passage non trouvé"
}
📊 Logging
L'API enregistre :
En cas de tentative non autorisée :
LogService::log('Tentative de suppression de passage non autorisée', [
'level' => 'warning',
'userId' => $userId,
'userRole' => $userRole,
'entiteId' => $entiteId,
'passageId' => $passageId,
'chk_user_delete_pass' => 0
]);
En cas de succès :
LogService::log('Suppression d\'un passage', [
'level' => 'info',
'userId' => $userId,
'passageId' => $passageId
]);
🎯 Exemple d'utilisation
Requête
curl -X DELETE https://api.geosector.fr/api/passages/19500576 \
-H "Authorization: Bearer {session_token}" \
-H "Content-Type: application/json"
Scénarios
Scénario 1 : Membre avec permission ✅
- Utilisateur : fk_role = 1
- Entité : chk_user_delete_pass = 1
- Résultat : Suppression autorisée
Scénario 2 : Membre sans permission ❌
- Utilisateur : fk_role = 1
- Entité : chk_user_delete_pass = 0
- Résultat : Erreur 403
Scénario 3 : Admin amicale ✅
- Utilisateur : fk_role = 2
- Résultat : Suppression autorisée (pas de vérification chk_user_delete_pass)
⚠️ Notes importantes
- Soft delete : Le passage n'est pas supprimé physiquement, seulement
chk_active = 0 - Traçabilité :
updated_atetfk_user_modifsont mis à jour - Contrôle entité : Un utilisateur ne peut supprimer que les passages de son entité
- Log warning : Toute tentative non autorisée est loggée en niveau WARNING
🔧 Configuration côté amicale
Pour autoriser les membres à supprimer des passages :
UPDATE entites
SET chk_user_delete_pass = 1
WHERE id = {entite_id};
Cette modification ne peut être faite que par un administrateur (fk_role > 1) via l'endpoint :
PUT /api/entites/{id}
{
"chk_user_delete_pass": 1
}
Version API : 3.1.4 Date : 20/08/2025