- Update isValidEmail in helpers.js with secure non-backtracking regex - Use isValidEmail helper in auth.controller.js - Use isValidEmail helper in contact.controller.js - Replace regex with Zod .email() in newsletter.validation.js - Fixes 5 SonarQube Security Hotspots for DoS via backtracking 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| database | ||
| docs | ||
| public | ||
| scripts | ||
| src | ||
| test | ||
| .dockerignore | ||
| .env | ||
| .env.dev | ||
| .env.preprod | ||
| .env.production | ||
| .gitignore | ||
| .sonarignore | ||
| API-DOCUMENTATION.md | ||
| backend.log | ||
| create-test-users.sql | ||
| db.js | ||
| DEPLOYMENT-WORKFLOW.md | ||
| Dockerfile | ||
| eslint.config.js | ||
| grafana-http-panel.json | ||
| index.html | ||
| index.js | ||
| JENKINS_AUTO_TRIGGER_SETUP.md | ||
| JENKINS_WEBHOOK_SETUP.md | ||
| Jenkinsfile | ||
| jest.config.js | ||
| jest.setup.js | ||
| NEWSLETTER_SETUP.md | ||
| package-lock.json | ||
| package.json | ||
| postman-collection.json | ||
| prometheus-dev.yml | ||
| README.md | ||
| restart-all.bat | ||
| RESTART-ALL.ps1 | ||
| restart-backend.bat | ||
| RESTART-FORCE.bat | ||
| sonar-project.properties | ||
| test-admin-features.js | ||
| test-all-roles.sh | ||
| test-auth.sh | ||
| test-prizes.js | ||
| test-roles.sh | ||
The Tip Top Backend API
API backend pour le jeu-concours The Tip Top.
Configuration
Variables d'environnement
Le fichier .env contient la configuration de la base de données et de l'application :
DB_HOST=51.75.24.29
DB_PORT=5433
DB_USER=postgres
DB_PASS=postgres
DB_NAME=thetiptop_dev
PORT=4000
JWT_SECRET=thetiptopsecret
SESSION_SECRET=thetiptopsessionsecret
Note : La base de données PostgreSQL est hébergée sur le serveur distant 51.75.24.29:5433.
Installation
# Installer les dépendances
npm install
# Créer le schéma de la base de données
psql -U postgres -d thetiptop_dev -p 5433 -f database/schema.sql
# Insérer les données de test
npm run db:seed
Démarrage
Démarrage normal
npm start
Démarrage en mode développement (avec nodemon)
npm run dev
Arrêter le serveur
Sur Windows :
- Ouvrez le Gestionnaire des tâches (Ctrl + Shift + Esc)
- Cherchez les processus "Node.js"
- Terminez-les tous
Ou via PowerShell :
Get-Process node | Stop-Process -Force
Structure du projet
the-tip-top-backend/
├── database/
│ ├── schema.sql # Schéma de la base de données
│ ├── seed.js # Script de seed
│ └── README.md # Documentation DB
├── src/
│ ├── config/
│ │ └── env.js # Configuration environnement
│ ├── controllers/ # Contrôleurs (logique métier)
│ ├── middleware/ # Middlewares (auth, validation, erreurs)
│ ├── routes/ # Définition des routes
│ ├── services/ # Services (email, etc.)
│ ├── utils/ # Utilitaires
│ └── validations/ # Schémas de validation Zod
├── db.js # Configuration PostgreSQL
├── index.js # Point d'entrée de l'application
└── .env # Variables d'environnement
Routes API
Authentification (/api/auth)
POST /register- InscriptionPOST /login- ConnexionGET /verify-email/:token- Vérification emailPOST /forgot-password- Demande de réinitialisationPOST /reset-password- Réinitialisation du mot de passe
Utilisateur (/api/users)
GET /profile- Récupérer le profilPUT /profile- Mettre à jour le profilPOST /change-password- Changer le mot de passe
Jeu (/api/game)
POST /play- Jouer et obtenir un ticketGET /my-tickets- Mes ticketsGET /ticket/:code- Détails d'un ticket
Employé (/api/employee)
POST /validate-ticket- Valider un ticketGET /pending-tickets- Tickets en attente
Admin (/api/admin)
GET /statistics- Statistiques globalesGET /prizes- Liste des prixPOST /prizes- Créer un prixPUT /prizes/:id- Modifier un prixDELETE /prizes/:id- Supprimer un prixGET /users- Liste des utilisateursPOST /employees- Créer un employéPUT /users/:id- Modifier un utilisateurDELETE /users/:id- Supprimer un utilisateurGET /tickets- Liste des tickets
Comptes de test
Après avoir exécuté le seed :
| Mot de passe | Rôle | |
|---|---|---|
| admin@thetiptop.com | Admin123! | ADMIN |
| employee1@thetiptop.com | Employee123! | EMPLOYEE |
| employee2@thetiptop.com | Employee123! | EMPLOYEE |
| client1@example.com | Client123! | CLIENT |
| client2-5@example.com | Client123! | CLIENT |
Tests
# Tests unitaires
npm test
# Tests d'intégration
npm run test:integration
Endpoints de monitoring
GET /- Health checkGET /db-check- Vérification connexion DBGET /metrics- Métriques Prometheus
Technologies
- Express - Framework web
- PostgreSQL - Base de données
- JWT - Authentification
- Bcrypt - Hashage de mots de passe
- Zod - Validation des données
- Nodemailer - Envoi d'emails
- Helmet - Sécurité HTTP
- CORS - Gestion des origines
- Morgan - Logs HTTP
- Prometheus - Métriques