A complete RESTful authentication API built with Node.js, Express, and MySQL.
- User registration
- Email/password login
- JWT authentication with access and refresh tokens
- Email verification
- Password reset
- Profile update
- Data validation with Joi
- Error handling
- Logging with Winston
- Email sending with Nodemailer
- Node.js (v14+)
- MySQL (v5.7+)
- npm or yarn
- Clone the repository:
git clone https://github.com/goncoolio/kit.git
cd <folder-name>- Install dependencies:
npm install- Copy .env.example to .env:
cp .env.example .env- Configure environment variables in .env:
# App
APP_NAME="Your App"
NODE_ENV=development
PORT=5200
# JWT
JWT_SECRET=your_jwt_secret
ACCESS_TOKEN_LIFE=30m
REFRESH_TOKEN_LIFE=30d
# Email
SMTP_HOST=your_smtp_host
SMTP_PORT=465
SMTP_EMAIL=your_email
SMTP_PASSWORD=your_password
FROM_NAME="Your App"
FROM_EMAIL=no-reply@yourapp.com- Configure database in src/config/config.json:
{
"development": {
"username": "your_username",
"password": "your_password",
"database": "your_db",
"host": "127.0.0.1",
"dialect": "mysql"
}
}- Create database:
npx sequelize-cli db:create- Run migrations:
npx sequelize-cli db:migrateDevelopment mode:
npm run devProduction mode:
npm startPOST /api/auth/register- RegisterPOST /api/auth/login- LoginPOST /api/auth/logout- LogoutGET /api/auth/profile- Get profilePOST /api/auth/refresh-token- Refresh tokenPUT /api/auth/change-password- Change passwordPUT /api/auth/confirm-email- Confirm emailPOST /api/auth/reset-password- Request password resetPUT /api/auth/confirm-password- Confirm password resetPOST /api/auth/update-profile- Update profile
src/
├── config/ # Configurations
├── controllers/ # Controllers
├── Email/ # Email templates
├── middleware/ # Middlewares
├── migrations/ # Database migrations
├── models/ # Sequelize models
├── routes/ # Routes
├── services/ # Services
└── validator/ # Validators
- Passwords hashed with bcrypt
- CORS protection
- Input data validation
- Sensitive routes protected with JWT
- Expired token handling
- Token blacklisting
Logs are generated in the logs/ folder with daily rotation.
Une API RESTful d'authentification complète construite avec Node.js, Express et MySQL.
- Inscription utilisateur
- Connexion avec email/mot de passe
- Authentification JWT avec tokens d'accès et de rafraîchissement
- Vérification d'email
- Réinitialisation de mot de passe
- Mise à jour du profil
- Validation des données avec Joi
- Gestion des erreurs
- Logs avec Winston
- Envoi d'emails avec Nodemailer
- Node.js (v14+)
- MySQL (v5.7+)
- npm ou yarn
- Clonez le dépôt :
git clone https://github.com/goncoolio/kit.git
cd <nom-du-dossier>- Installez les dépendances :
npm install- Copiez le fichier .env.example en .env :
cp .env.example .env- Configurez les variables d'environnement dans le fichier .env :
# App
APP_NAME="Votre App"
NODE_ENV=development
PORT=5200
# JWT
JWT_SECRET=votre_secret_jwt
ACCESS_TOKEN_LIFE=30m
REFRESH_TOKEN_LIFE=30d
# Email
SMTP_HOST=votre_host_smtp
SMTP_PORT=465
SMTP_EMAIL=votre_email
SMTP_PASSWORD=votre_password
FROM_NAME="Votre App"
FROM_EMAIL=no-reply@votreapp.com- Configurez la base de données dans src/config/config.json :
{
"development": {
"username": "votre_username",
"password": "votre_password",
"database": "votre_db",
"host": "127.0.0.1",
"dialect": "mysql"
}
}- Créez la base de données :
npx sequelize-cli db:create- Exécutez les migrations :
npx sequelize-cli db:migrateMode développement :
npm run devMode production :
npm startPOST /api/auth/register- InscriptionPOST /api/auth/login- ConnexionPOST /api/auth/logout- DéconnexionGET /api/auth/profile- Obtenir le profilPOST /api/auth/refresh-token- Rafraîchir le tokenPUT /api/auth/change-password- Changer le mot de passePUT /api/auth/confirm-email- Confirmer l'emailPOST /api/auth/reset-password- Demander la réinitialisation du mot de passePUT /api/auth/confirm-password- Confirmer la réinitialisation du mot de passePOST /api/auth/update-profile- Mettre à jour le profil
src/
├── config/ # Configurations
├── controllers/ # Contrôleurs
├── Email/ # Templates d'emails
├── middleware/ # Middlewares
├── migrations/ # Migrations de base de données
├── models/ # Modèles Sequelize
├── routes/ # Routes
├── services/ # Services
└── validator/ # Validateurs
- Mots de passe hashés avec bcrypt
- Protection CORS
- Validation des données entrantes
- Protection des routes sensibles avec JWT
- Gestion des tokens expirés
- Blacklist des tokens
Les logs sont générés dans le dossier logs/ avec rotation quotidienne.
Ousmane Coulibaly
ISC