đ Informations gĂ©nĂ©rales
Base URL
http://www.api.bda-igensia-lyon.fr/api
Format de réponse
application/json
đ Authentification
SystÚme d'authentification par JWT avec sécurité renforcée
En-tĂȘtes requis
Authorization: Bearer <votre-token-jwt>
Content-Type: application/json
Content-Type: application/json
Fonctionnalités de sécurité
- Tokens JWT avec expiration configurable
- Cookies httpOnly pour stockage sécurisé
- Rate limiting sur les tentatives de connexion
- Hachage des mots de passe avec bcrypt + salt + pepper
- Validation de la force des mots de passe
- Protection contre les mots de passe communs
RĂŽles utilisateur
member
Utilisateur standard
admin
Administrateur avec droits de gestion
superadmin
Super administrateur avec tous les droits
đĄ Gestion de l'authentification et des utilisateurs
Base URL: /auth
POST
/auth/register
Public
Inscription d'un nouvel utilisateur
Corps de la requĂȘte
username: string (requis)
email: string (requis)
password: string (requis, min 8 caractĂšres)
first_name: string (requis)
last_name: string (requis)
Réponse
Token JWT + informations utilisateur
POST
/auth/login
Public
Connexion d'un utilisateur
Rate Limiting
5 tentatives par 2 minutes
Corps de la requĂȘte
email: string (requis)
password: string (requis)
Réponse
Token JWT + informations utilisateur
POST
/auth/logout
Public
Déconnexion d'un utilisateur
Réponse
Message de confirmation
GET
/auth/profile
Auth requise
Récupérer le profil de l'utilisateur connecté
Réponse
Informations du profil utilisateur
PUT
/auth/profile
Auth requise
Mettre à jour le profil de l'utilisateur connecté
Corps de la requĂȘte
first_name: string (optionnel)
last_name: string (optionnel)
username: string (optionnel)
Réponse
Profil utilisateur mis Ă jour
đĄ Gestion des utilisateurs (accĂšs administrateur requis)
Base URL: /users
GET
/users/
Auth requise
admin
Récupérer la liste des utilisateurs
ParamĂštres de requĂȘte
role: string (optionnel) - filtrer par rĂŽle
limit: number (optionnel, défaut: 20)
offset: number (optionnel, défaut: 0)
Réponse
Liste paginée des utilisateurs
GET
/users/:id
Auth requise
admin
Récupérer un utilisateur spécifique
Réponse
Informations de l'utilisateur
PUT
/users/:id
Auth requise
admin
Mettre Ă jour un utilisateur
Corps de la requĂȘte
username: string (optionnel)
email: string (optionnel)
first_name: string (optionnel)
last_name: string (optionnel)
role: string (optionnel)
password: string (optionnel)
Réponse
Utilisateur mis Ă jour
DELETE
/users/:id
Auth requise
superadmin
Supprimer un utilisateur
Réponse
Message de confirmation
GET
/users/stats/overview
Auth requise
admin
Statistiques des utilisateurs
Réponse
Statistiques par rĂŽle et total
đĄ Gestion des Ă©vĂ©nements
Base URL: /events
GET
/events/
Public
Récupérer la liste des événements
ParamĂštres de requĂȘte
category: string (optionnel)
status: string (optionnel)
limit: number (optionnel)
offset: number (optionnel)
Réponse
Liste paginée des événements
GET
/events/:id
Public
Récupérer un événement spécifique
Réponse
Détails de l'événement
POST
/events/
Auth requise
admin
Créer un nouvel événement
Corps de la requĂȘte
title: string (requis)
description: string (requis)
date: datetime (requis)
location: string (requis)
category: string (requis)
status: string (optionnel, défaut: 'draft')
helloasso_link: string (optionnel)
Réponse
ĂvĂ©nement créé
PUT
/events/:id
Auth requise
admin
Mettre à jour un événement
Réponse
ĂvĂ©nement mis Ă jour
DELETE
/events/:id
Auth requise
admin
Supprimer un événement
Réponse
Message de confirmation
đĄ Gestion des articles de presse
Base URL: /news
GET
/news/
Public
Récupérer la liste des articles
ParamĂštres de requĂȘte
category: string (optionnel)
status: string (optionnel)
limit: number (optionnel)
offset: number (optionnel)
Réponse
Liste paginée des articles
GET
/news/:id
Public
Récupérer un article spécifique
Réponse
Détails de l'article
POST
/news/
Auth requise
admin
Créer un nouvel article
Corps de la requĂȘte
title: string (requis)
content: string (requis)
summary: string (requis)
category: string (requis)
status: string (optionnel, défaut: 'draft')
Réponse
Article créé
PUT
/news/:id
Auth requise
admin
Mettre Ă jour un article
Réponse
Article mis Ă jour
DELETE
/news/:id
Auth requise
admin
Supprimer un article
Réponse
Message de confirmation
đĄ Gestion des galeries photo
Base URL: /galleries
GET
/galleries/
Public
Récupérer la liste des galeries
Réponse
Liste des galeries
GET
/galleries/:id
Public
Récupérer une galerie spécifique
Réponse
Détails de la galerie et ses photos
POST
/galleries/
Auth requise
admin
Créer une nouvelle galerie
Réponse
Galerie créée
PUT
/galleries/:id
Auth requise
admin
Mettre Ă jour une galerie
Réponse
Galerie mise Ă jour
DELETE
/galleries/:id
Auth requise
admin
Supprimer une galerie
Réponse
Message de confirmation
đĄ Gestion des membres du bureau
Base URL: /bureaus
GET
/bureaus/
Public
Récupérer la liste des membres du bureau
Réponse
Liste des membres du bureau
POST
/bureaus/
Auth requise
admin
Ajouter un membre au bureau
Corps de la requĂȘte
name: string (requis)
position: string (requis)
bio: string (optionnel)
photo_url: string (optionnel)
Réponse
Membre ajouté
PUT
/bureaus/:id
Auth requise
admin
Mettre Ă jour un membre du bureau
Réponse
Membre mis Ă jour
DELETE
/bureaus/:id
Auth requise
admin
Supprimer un membre du bureau
Réponse
Message de confirmation
đĄ Gestion des messages de contact
Base URL: /contact
POST
/contact/
Public
Envoyer un message de contact
Rate Limiting
5 messages par 15 minutes
Corps de la requĂȘte
name: string (requis)
email: string (requis)
subject: string (requis)
message: string (requis)
Réponse
Message envoyé
GET
/contact/
Auth requise
admin
Récupérer les messages de contact
Réponse
Liste des messages
PUT
/contact/:id/read
Auth requise
admin
Marquer un message comme lu
Réponse
Message marqué comme lu
đĄ Gestion des fichiers uploadĂ©s
Base URL: /upload
POST
/upload/image
Auth requise
admin
Uploader une image
Corps de la requĂȘte
image: file (requis) - formats: jpeg, png, gif, webp
maxSize: 10MB
Réponse
URL de l'image uploadée
POST
/upload/file
Auth requise
admin
Uploader un fichier
Corps de la requĂȘte
file: file (requis)
maxSize: 10MB
Réponse
URL du fichier uploadé
đĄ Outils d'administration avancĂ©s
Base URL: /admin
POST
/admin/generate-password
Auth requise
admin
Générer un mot de passe sécurisé
Corps de la requĂȘte
length: number (optionnel, défaut: 12, min: 8, max: 50)
Réponse
Mot de passe généré + score de sécurité
POST
/admin/validate-password
Auth requise
admin
Valider la force d'un mot de passe
Corps de la requĂȘte
password: string (requis)
Réponse
Score de sécurité + recommandations
POST
/admin/reset-user-password/:userId
Auth requise
admin
Réinitialiser le mot de passe d'un utilisateur
Corps de la requĂȘte
newPassword: string (optionnel)
generateRandom: boolean (optionnel)
Réponse
Nouveau mot de passe (si généré automatiquement)
GET
/admin/security-status
Auth requise
admin
Vérifier le statut de sécurité du systÚme
Réponse
Informations sur la configuration de sécurité
đĄïž SĂ©curitĂ© & Rate Limiting
Rate Limiting
- Global: 100 requĂȘtes par 15 minutes par IP
- Connexion: 5 tentatives de connexion par 2 minutes par IP
- Contact: 5 messages par 15 minutes par IP
Sécurité des mots de passe
- Longueur minimale: 8 caractĂšres
- Au moins une lettre majuscule
- Au moins une lettre minuscule
- Au moins un chiffre
- Au moins un caractÚre spécial
- Pas de mots de passe communs
- Hachage: bcrypt + salt automatique + pepper global
â ïž Gestion des erreurs
Codes de statut HTTP
200: SuccĂšs
201: Créé avec succÚs
400: Erreur de validation / RequĂȘte malformĂ©e
401: Non authentifié
403: Permission insuffisante
404: Ressource non trouvée
409: Conflit (ressource déjà existante)
429: Trop de requĂȘtes (rate limit atteint)
500: Erreur serveur interne
Format standard des erreurs
{
"message": "Description de l'erreur",
"details": "Détails supplémentaires (optionnel)",
"field": "Champ concerné (pour erreurs de validation)"
}
đ§ Environnement systĂšme
Configuration actuelle
- Environnement: production
- Base de données: MySQL
- Cache: Redis
- Taille max fichier: 10485760
Santé de l'API
Vérifiez le statut en temps réel :
GET http://www.api.bda-igensia-lyon.fr/api/health