0% ont trouvé ce document utile (0 vote)
0 vues7 pages

Shared Notes

Le document présente une API construite avec Express et Sequelize pour gérer des étudiants et des utilisateurs. Il inclut des modèles de données pour les étudiants et les utilisateurs, des routes pour les opérations CRUD, ainsi qu'une configuration pour la connexion à une base de données PostgreSQL et à Redis. L'API utilise également des fonctionnalités d'authentification avec JWT et des mots de passe hachés pour la sécurité.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues7 pages

Shared Notes

Le document présente une API construite avec Express et Sequelize pour gérer des étudiants et des utilisateurs. Il inclut des modèles de données pour les étudiants et les utilisateurs, des routes pour les opérations CRUD, ainsi qu'une configuration pour la connexion à une base de données PostgreSQL et à Redis. L'API utilise également des fonctionnalités d'authentification avec JWT et des mots de passe hachés pour la sécurité.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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 || ![Link]('Bearer')) 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;

Vous aimerez peut-être aussi