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=[email protected]
- 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:migrate
Development mode:
npm run dev
Production mode:
npm start
POST /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=[email protected]
- 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:migrate
Mode développement :
npm run dev
Mode production :
npm start
POST /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