Une API RESTful d'authentification et de gestion des utilisateurs, rôles et permissions, construite avec Node.js, Express, Sequelize et MySQL.
- Node.js & Express
- MySQL avec Sequelize ORM
- Docker & Docker Compose
- JWT pour l'authentification
- Winston pour les logs
- Helmet pour la sécurité
- CORS pour les requêtes cross-origin
api/
├── app.js # Configuration de l'application Express
├── server.js # Point d'entrée du serveur
├── config/
│ └── database.js # Configuration Sequelize/MySQL
├── controllers/ # Logique métier
├── middlewares/ # Middlewares personnalisés
├── models/ # Modèles Sequelize
├── routes/ # Routes de l'API
└── utils/ # Utilitaires
Authentication (authController.js)
- POST
/api/auth/register: Inscription d'un nouvel utilisateur - POST
/api/auth/login: Connexion utilisateur
Gestion des Utilisateurs (userController.js)
- POST
/api/users: Création d'un utilisateur - GET
/api/users/:id: Récupération d'un utilisateur - GET
/api/users/:id/roles: Liste des rôles d'un utilisateur - PUT
/api/users/:id: Mise à jour des informations - PUT
/api/users/:id/password: Modification du mot de passe - DELETE
/api/users/:id: Suppression d'un utilisateur - POST
/api/users/addRole: Ajout d'un rôle - POST
/api/users/removeRole: Retrait d'un rôle
Gestion des Rôles (roleController.js)
- POST
/api/roles: Création d'un rôle - GET
/api/roles: Liste des rôles - GET
/api/roles/:id: Détails d'un rôle - GET
/api/roles/:id/permissions: Liste des permissions d'un rôle - PUT
/api/roles/:id: Mise à jour d'un rôle - DELETE
/api/roles/:id: Suppression d'un rôle - POST
/api/roles/addPermission: Ajout d'une permission - POST
/api/roles/removePermission: Retrait d'une permission
Gestion des Permissions (permissionController.js)
- POST
/api/permissions: Création d'une permission - GET
/api/permissions: Liste des permissions - GET
/api/permissions/:id: Détails d'une permission - PUT
/api/permissions/:id: Mise à jour d'une permission - DELETE
/api/permissions/:id: Suppression d'une permission
- Authentification JWT (
authMiddleware.js) - Vérification des permissions (
checkPermission.js) - Gestion globale des erreurs (
errorHandler.js) - Protection CORS et autres sécurités via Helmet (
app.js)
Le fichier .env permet de configurer :
- Paramètres serveur (PORT, NODE_ENV)
- Configuration base de données
- Secrets JWT
- Paramètres de logging
- Rate limiting
- Cache
L'application peut être déployée via Docker avec :
Dockerfilepour l'APIdocker-compose.ymlpour orchestrer l'API et MySQL
- Cloner le repository
- Copier
.env.examplevers.envet configurer les variables - Lancer avec Docker :
docker-compose up -dOu lancer localement :
npm install
npm run dev