34 lines
877 B
JavaScript
34 lines
877 B
JavaScript
const jwt = require('jsonwebtoken');
|
|
const config = require('../config/env');
|
|
|
|
const authenticateToken = (req, res, next) => {
|
|
// Try to get token from cookie first (new secure method)
|
|
let token = req.cookies?.token;
|
|
|
|
// Fallback: Check Authorization header for backward compatibility
|
|
if (!token) {
|
|
const authHeader = req.headers['authorization'];
|
|
token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
|
|
}
|
|
|
|
if (!token) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: 'Zugriff verweigert. Kein Token bereitgestellt.'
|
|
});
|
|
}
|
|
|
|
try {
|
|
const decoded = jwt.verify(token, config.jwtSecret);
|
|
req.user = decoded;
|
|
next();
|
|
} catch (error) {
|
|
return res.status(403).json({
|
|
success: false,
|
|
message: 'Ungültiger oder abgelaufener Token.'
|
|
});
|
|
}
|
|
};
|
|
|
|
module.exports = { authenticateToken };
|