# API Laravel - EVENTS HAGGAI BURKINA FASO Backend API Laravel 11 pour le portail d'inscription EVENTS HAGGAI BURKINA FASO. ## 🚀 Installation ### Prérequis - PHP 8.2+ - Composer - MySQL 8.0+ ### Installation locale ```bash # Installer les dépendances composer install # Copier le fichier d'environnement cp .env.example .env # Générer la clé d'application php artisan key:generate # Configurer la base de données dans .env # DB_CONNECTION=mysql # DB_HOST=127.0.0.1 # DB_PORT=3306 # DB_DATABASE=eventshbf # DB_USERNAME=root # DB_PASSWORD= # Exécuter les migrations php artisan migrate # Charger les données initiales php artisan db:seed ``` ## 📋 Configuration ### Variables d'environnement importantes Voir `ENV_VARIABLES.md` pour la liste complète des variables d'environnement. - `APP_URL` : URL de l'application - `FRONTEND_URL` : URL du frontend (pour CORS et notifications) - `DB_*` : Configuration de la base de données - `MAIL_*` : Configuration email ### Inscriptions publiques (Feature Flag) Les inscriptions publiques (sans authentification) peuvent être activées via les variables suivantes : ```env # Activer les inscriptions publiques REGISTRATION_PUBLIC_ENABLED=true # Limite de débit (format: max_attempts,decay_minutes) # Exemple: 20 requêtes par minute REGISTRATION_PUBLIC_RATE_LIMIT=20,1 # Exiger la vérification email (optionnel) REGISTRATION_PUBLIC_REQUIRE_EMAIL_VERIFICATION=true # Durée d'expiration du token de vérification (en jours) REGISTRATION_VERIFICATION_TOKEN_EXPIRES_DAYS=7 ``` **Par défaut**, les inscriptions publiques sont **désactivées** (`REGISTRATION_PUBLIC_ENABLED=false`). Quand désactivées, la route publique retourne **404**. ## 🔐 Authentification L'API utilise Laravel Sanctum avec des tokens Bearer. Voir `AUTHENTICATION.md` pour plus de détails. ## 📊 Modèle de données Voir `DATA_MODEL.md` pour la documentation complète du modèle de données. ## 🧪 Tests ```bash php artisan test ``` ## 📚 Documentation - `AUTHENTICATION.md` : Documentation de l'authentification - `DATA_MODEL.md` : Documentation du modèle de données - `ENV_VARIABLES.md` : Variables d'environnement - `SETUP_DATABASE.md` : Configuration de la base de données ## 🌐 Déploiement ### Bluehost 1. Uploader les fichiers dans le répertoire du serveur 2. Configurer le document root sur `/public` 3. Configurer `.env` avec les informations de production 4. Exécuter : ```bash composer install --no-dev --optimize-autoloader php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache ``` 5. S'assurer que `storage/` et `bootstrap/cache/` sont accessibles en écriture ## 📝 Endpoints API ### Public - `GET /api/events` - Liste des événements actifs - `GET /api/events/{slug}` - Détails d'un événement - `GET /api/events/{slug}/plans` - Formules tarifaires d'un événement - `GET /api/events/{slug}/settings` - Paramètres d'un événement ### Authentification - `POST /api/auth/register` - Inscription - `POST /api/auth/login` - Connexion - `POST /api/auth/logout` - Déconnexion - `GET /api/auth/me` - Utilisateur connecté ### Inscriptions (authentifié) - `POST /api/registrations` - Créer une inscription - `PUT /api/registrations/{id}` - Modifier une inscription - `POST /api/registrations/{id}/select-payment` - Sélectionner le mode de paiement - `POST /api/registrations/{id}/submit` - Soumettre une inscription - `GET /api/registrations/me` - Mes inscriptions ### Inscriptions publiques (sans authentification) - `POST /api/public/events/{event}/registrations` - Créer une inscription publique **Note** : Cette route est protégée par un feature flag. Si `REGISTRATION_PUBLIC_ENABLED=false`, la route retourne 404. ### Contributions (authentifié) - `POST /api/contributions` - Créer une contribution - `PUT /api/contributions/{id}` - Modifier une contribution - `POST /api/contributions/{id}/submit` - Soumettre une contribution - `GET /api/contributions/me` - Mes contributions ### Batches (délégué lead) - `POST /api/batches` - Créer un batch - `POST /api/batches/{id}/add-registration` - Ajouter une inscription - `POST /api/batches/{id}/add-contribution` - Ajouter une contribution - `POST /api/batches/{id}/submit` - Soumettre un batch - `GET /api/batches/me` - Mes batches - `GET /api/batches/{id}` - Détails d'un batch ### Trésorerie (trésorier/admin) - `GET /api/treasury/contributions` - Contributions en attente - `POST /api/treasury/contributions/{id}/confirm` - Confirmer une contribution - `GET /api/treasury/batches` - Batches en attente - `POST /api/treasury/batches/{id}/mark-paid` - Marquer un batch comme payé ### Exports (admin/trésorier) - `GET /api/admin/exports/participants` - Export CSV participants - `GET /api/admin/exports/contributions` - Export CSV contributions - `GET /api/admin/exports/batches` - Export CSV batches