Convert backend to regular directory
This commit is contained in:
44
backend/src/middlewares/auth.middleware.js
Normal file
44
backend/src/middlewares/auth.middleware.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const jwt = require("jsonwebtoken");
|
||||
const prisma = require("../config/prisma");
|
||||
|
||||
const authMiddleware = async (req, res, next) => {
|
||||
try {
|
||||
const authHeader = req.headers.authorization;
|
||||
|
||||
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
||||
return res.status(401).json({
|
||||
message: "Token manquant ou invalide.",
|
||||
});
|
||||
}
|
||||
|
||||
const token = authHeader.split(" ")[1];
|
||||
|
||||
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
||||
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id: decoded.id },
|
||||
select: {
|
||||
id: true,
|
||||
firstname: true,
|
||||
lastname: true,
|
||||
email: true,
|
||||
role: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
return res.status(401).json({
|
||||
message: "Utilisateur introuvable.",
|
||||
});
|
||||
}
|
||||
|
||||
req.user = user;
|
||||
next();
|
||||
} catch (error) {
|
||||
return res.status(401).json({
|
||||
message: "Token invalide ou expiré.",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = authMiddleware;
|
||||
13
backend/src/middlewares/role.middleware.js
Normal file
13
backend/src/middlewares/role.middleware.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const roleMiddleware = (...allowedRoles) => {
|
||||
return (req, res, next) => {
|
||||
if (!req.user || !allowedRoles.includes(req.user.role)) {
|
||||
return res.status(403).json({
|
||||
message: "Accès refusé.",
|
||||
});
|
||||
}
|
||||
|
||||
next();
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = roleMiddleware;
|
||||
17
backend/src/middlewares/validate.middleware.js
Normal file
17
backend/src/middlewares/validate.middleware.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const validate = (schema) => {
|
||||
return (req, res, next) => {
|
||||
const result = schema.safeParse(req.body);
|
||||
|
||||
if (!result.success) {
|
||||
return res.status(400).json({
|
||||
message: "Données invalides",
|
||||
errors: result.error.flatten().fieldErrors,
|
||||
});
|
||||
}
|
||||
|
||||
req.body = result.data;
|
||||
next();
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = validate;
|
||||
Reference in New Issue
Block a user