jagd-apps/stoeberhunde/backend/middleware/stoeberhundefuehrerAuth.js

30 lines
1.1 KiB
JavaScript

const jwt = require('jsonwebtoken');
const config = require('../config/env');
const authenticateStoeberhundefuehrer = (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({ success: false, message: 'Kein Token bereitgestellt' });
}
try {
const decoded = jwt.verify(token, config.jwtSecret);
if (decoded.role !== 'stoeberhundefuehrer') {
return res.status(403).json({ success: false, message: 'Zugriff verweigert' });
}
// Token einer anderen App ablehnen. Greift auch dann, wenn versehentlich
// wieder ein gemeinsames JWT-Secret konfiguriert wird.
if (decoded.app && decoded.app !== config.appName) {
return res.status(403).json({ success: false, message: 'Zugriff verweigert' });
}
req.stoeberhundefuehrerUser = decoded;
next();
} catch (error) {
return res.status(403).json({ success: false, message: 'Ungültiger oder abgelaufener Token' });
}
};
module.exports = { authenticateStoeberhundefuehrer };