Files
Parking/server/middleware/auth.js
2026-03-11 17:18:34 +01:00

53 lines
1.2 KiB
JavaScript

const jwt = require('jsonwebtoken');
const JWT_SECRET = process.env.JWT_SECRET || 'smart-parking-secret-key-bts-ciel-2025';
function generateToken(user) {
return jwt.sign(
{
id: user.id,
email: user.email,
role: user.role
},
JWT_SECRET,
{ expiresIn: '24h' }
);
}
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({
success: false,
message: 'Token manquant'
});
}
jwt.verify(token, JWT_SECRET, (err, user) => {
if (err) {
return res.status(403).json({
success: false,
message: 'Token invalide'
});
}
req.user = user;
next();
});
}
function requireAdmin(req, res, next) {
if (req.user.role !== 'admin') {
return res.status(403).json({
success: false,
message: 'Accès réservé aux administrateurs'
});
}
next();
}
module.exports = {
generateToken,
authenticateToken,
requireAdmin
};