PS C:\Users\DELL\Pictures\master\tp2_api> cat .\package.
json
{
"name": "tp2_api",
"version": "1.0.0",
"description": "",
"main": "[Link]",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs",
"dependencies": {
"bcrypt": "^6.0.0",
"body-parser": "^2.2.2",
"connect-redis": "^9.0.0",
"dotenv": "^17.4.2",
"express": "^5.2.1",
"express-session": "^1.19.0",
"jsonwebtoken": "^9.0.3",
"pg": "^8.21.0",
"pg-hstore": "^2.3.4",
"redis": "^6.0.0",
"sequelize": "^6.37.8"
}
}
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\models\[Link]
const { DataTypes} = require('sequelize');
const connexion = require('../config/connexion');
const Etudiant = [Link]("Etudiant",{
id_etudiant : {
type:[Link],
primaryKey: true,
autoIncrement: true,
},
prenom : {
type:[Link],
allowNull: false,
},
nom : {
type:[Link],
allowNull: false,
},
email : {
type:[Link],
allowNull: false,
},
telephone : {
type:[Link],
allowNull: false,
}
},
{
tableName:'etudiants',
timestamps:false
});
[Link] = Etudiant;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\models\[Link]
const { DataTypes} = require('sequelize');
const connexion = require('../config/connexion');
const Utilisateur = [Link]("Utilisateur",{
id_utilisateur : {
type:[Link],
primaryKey: true,
autoIncrement: true,
},
nom : {
type:[Link],
allowNull: false,
},
email : {
type:[Link],
allowNull: false,
},
mot_de_passe : {
type:[Link],
allowNull: false,
}
},
{
tableName:'utilisateurs',
timestamps:false
});
[Link] = Utilisateur;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\config\[Link]
const { Sequelize } =require('sequelize');
require('dotenv').config();
const connexion = new Sequelize(
[Link].DB_NAME,
[Link].DB_USER,
[Link].DB_PASSWORD,
{
host:[Link].DB_HOST,
dialect : 'postgres',
logging:true,
}
);
[Link] = connexion;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\config\[Link]
const redis = require('redis');
const client = [Link]();
[Link]('error',(err)=>{
[Link]("erreur de connexion dans redis",err);
});
[Link]();
[Link] = client;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\[Link]
const express= require('express');
const bodyParser = require('body-parser');
require('dotenv').config();
const connexion =require('./config/connexion');
const EtudiantRoutes = require('./routes/EtudiantRoutes');
const UtilisateurRoutes = require('./routes/UtilisateurRoutes');
const app = express();
const PORT = [Link];
[Link]([Link]());
[Link]('/etudiants', EtudiantRoutes);
[Link]('/utilisateurs', UtilisateurRoutes);
[Link]({ alter : false})
.then(()=>{
[Link]("connexion reussie");
})
.catch(err =>{
[Link]("erreur de connexion", err)
});
[Link](PORT,()=> {
[Link]("Api demarré sur le port 3000");
})
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\.env
PORT=3000
DB_NAME=ges_ecoles
DB_USER=postgres
DB_PASSWORD=Nasry3221646
DB_HOST=localhost
JWT_SECRET=ebd6cb513b7ddb8cfd41f9ab32d247796fb9c0ac44d44120cbdf55afa606e222730549fe52
27bc33cfd0c7a346c609b00123f3c3f41ae6bb5266ab7ecd4cc83e
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\controllers\[Link]
const Etudiant = require('../models/Etudiant');
[Link] = async(req,res)=>{
try{
const etudiants= await [Link]();
[Link](etudiants);
}
catch(err){
[Link](500).json({message : " erreur cote serveur"});
}
};
[Link]=async(req,res) =>{
try{
const {prenom,nom,email,telephone} = [Link];
const etudiant = await [Link]({prenom,nom,email,telephone});
[Link](201).json(etudiant);
}catch(err){
[Link](500).json({message:"Erreur lors de l'ajout"});
}
};
[Link]= async(req,res)=>{
try{
const id_etudiant = [Link].id_etudiant;
const { prenom,nom,email,telephone}= [Link];
const etudiant = await [Link](id_etudiant);
if (!etudiant) return [Link](404).json({message:"Id non trouvé"});
await [Link]({prenom,nom,email,telephone});
[Link](etudiant);
}catch(err){
[Link](500).json({message: "erreur de Modification"});
}
};
[Link]=async(req,res)=>{
try{
const id_etudiant = [Link].id_etudiant;
const etudiant = await [Link](id_etudiant);
if (!etudiant) return [Link](404).json({message: "Id non trouvé"});
await [Link]();
[Link]({message:"Etudiant supprimé avec success"});
}catch(err){
[Link](500).json({message:"Erreur de Modification"});
}
};
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\controllers\[Link]
const bcrypt = require('bcrypt');
const Utilisateur = require('../models/Utilisateur');
const { generateToken } =require('../utils/jwt');
const redis = require('../config/redis');
[Link] = async(req,res) =>{
const { nom,email,mot_de_passe} = [Link];
try{
const hash = await [Link](mot_de_passe, 10);
const user = await [Link]({nom,email,mot_de_passe:hash});
[Link](201).json({message: "l'utilisateur est inscrit avec success",user});
}catch(err){
[Link](500).json({message:"erreur de creation",error:[Link]});
}
};
PS C:\Users\DELL\Pictures\master\tp2_api> ls
Répertoire : C:\Users\DELL\Pictures\master\tp2_api
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 02/06/2026 19:19 config
d----- 02/06/2026 20:18 controllers
d----- 02/06/2026 20:08 middlewares
d----- 02/06/2026 19:15 models
d----- 02/06/2026 19:14 node_modules
d----- 02/06/2026 20:27 routes
d----- 02/06/2026 19:23 utils
-a---- 02/06/2026 19:23 236 .env
-a---- 02/06/2026 19:15 56711 [Link]
-a---- 02/06/2026 19:15 564 [Link]
-a---- 02/06/2026 20:38 693 [Link]
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\routes\[Link]
const express = require('express');
const router = [Link]();
const EtudiantController = require('../controllers/EtudiantController');
[Link]('/',[Link]);
[Link]('/',[Link]);
[Link]('/:id_etudiant',[Link]);
[Link]('/:id_etudiant',[Link]);
[Link]= router;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\routes\[Link]
const express = require('express');
const router = [Link]();
const UtilisateurController = require('../controllers/UtilisateurController');
[Link]('/inscription',[Link]);
[Link] = router;
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\utils\[Link]
const jwt = require('jsonwebtoken');
const secret = [Link].JWT_SECRET;
const generateToken = (payload)=>{
return [Link](payload,secret, {expiresIn: '1h'});
};
const verifyToken = (token)=>{
return [Link](token,secret);
};
[Link] = {generateToken, verifyToken};
PS C:\Users\DELL\Pictures\master\tp2_api> cat .\middlewares\[Link]
const { verifyToken } =require('../utils/jwt');
const redis = require('../config/redis');
const authentification = async(req,res, next) =>{
const header = [Link]['authorization'];
if (!header || ) return [Link](401).json({message: "Token manquant"});
const token = [Link](' ')[1];
try{
const decoded = verifyToken(token);
const session = await [Link](token);
if (!session) return [Link](401).json({message:"Token invalide"});
[Link]=decoded;
next();
}catch(err){
return [Link](401).json({message:"Token non valide"});
}
};
[Link] = authentification;