Files
geo/api/docs/CHK_USER_DELETE_PASS_INFO.md
Pierre 4c2e809a35 feat: Release v3.1.6 - Amélioration complète des flux de passages
- 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>
2025-08-21 17:57:27 +02:00

3.6 KiB

Gestion du champ chk_user_delete_pass

📋 Description

Le champ chk_user_delete_pass permet de contrôler si les membres d'une amicale peuvent supprimer des passages.

🔄 Modifications API

1. Base de données

  • Table : entites
  • Champ : chk_user_delete_pass TINYINT(1) DEFAULT 0
  • Valeurs :
    • 0 : Les membres NE peuvent PAS supprimer de passages (par défaut)
    • 1 : Les membres PEUVENT supprimer des passages

2. Endpoints modifiés

POST /api/entites (Création)

  • Le champ est automatiquement initialisé à 0 (false) lors de la création
  • Non modifiable à la création

PUT /api/entites/{id} (Modification)

Entrée JSON :

{
  "chk_user_delete_pass": 1
}
  • Type : Boolean (0 ou 1)
  • Obligatoire : Non
  • Accès : Administrateurs uniquement (fk_role > 1)

GET /api/entites/{id} (Récupération)

Sortie JSON :

{
  "id": 5,
  "name": "Amicale de Pompiers",
  "code_postal": "75001",
  "ville": "Paris",
  "chk_active": 1,
  "chk_user_delete_pass": 0
}

GET /api/entites (Liste)

Retourne chk_user_delete_pass pour chaque entité dans la liste.

3. Route /api/login

Le champ chk_user_delete_pass est maintenant inclus dans la réponse de login dans les objets amicale :

Réponse JSON :

{
  "user": { ... },
  "amicale": {
    "id": 5,
    "name": "Amicale de Pompiers",
    "code_postal": "75001",
    "ville": "Paris",
    "chk_demo": 0,
    "chk_mdp_manuel": 0,
    "chk_username_manuel": 0,
    "chk_copie_mail_recu": 0,
    "chk_accept_sms": 0,
    "chk_active": 1,
    "chk_stripe": 0,
    "chk_user_delete_pass": 0  // ← NOUVEAU CHAMP
  }
}

🎯 Utilisation côté client

Flutter/Web

Le client doit :

  1. Récupérer la valeur de chk_user_delete_pass depuis la réponse login
  2. Stocker cette valeur dans l'état de l'application
  3. Conditionner l'affichage du bouton de suppression selon cette valeur

Exemple Flutter :

// Dans le modèle Amicale
class Amicale {
  final int id;
  final String name;
  final bool chkUserDeletePass; // Nouveau champ
  
  bool get canUserDeletePassage => chkUserDeletePass;
}

// Dans l'UI
if (amicale.canUserDeletePassage) {
  // Afficher le bouton de suppression
  IconButton(
    icon: Icon(Icons.delete),
    onPressed: () => deletePassage(passageId),
  )
}

⚠️ Points importants

  1. Valeur par défaut : Toujours 0 (false) pour la sécurité
  2. Modification : Seuls les administrateurs (fk_role > 1) peuvent modifier ce champ
  3. Rétrocompatibilité : Les entités existantes ont la valeur 0 par défaut
  4. Validation côté serveur : L'API vérifiera également ce droit lors de la tentative de suppression

📝 Script SQL

Le script de migration est disponible dans :

/scripts/sql/add_chk_user_delete_pass.sql

Checklist d'implémentation

Côté API (déjà fait) :

  • Ajout du champ en base de données
  • Modification EntiteController (create, update, get)
  • Modification LoginController (réponse login)
  • Script SQL de migration

Côté Client (à faire) :

  • Ajouter le champ dans le modèle Amicale
  • Parser le champ depuis la réponse login
  • Stocker dans l'état de l'application
  • Conditionner l'affichage du bouton suppression
  • Tester avec des valeurs 0 et 1

🔒 Sécurité

Même si chk_user_delete_pass = 1, l'API devra vérifier :

  • L'authentification de l'utilisateur
  • L'appartenance à l'entité
  • Le droit de suppression sur le passage spécifique
  • Les règles métier (ex: pas de suppression après export)

Date : 20/08/2025 Version API : 3.1.4