mizuki-express/middleware/auth.js
2025-06-08 17:59:26 +02:00

28 lines
761 B
JavaScript

const jwt = require('jsonwebtoken');
const UserService = require('../services/userService');
const SECRET = process.env.JWT_SECRET;
function generateToken(user) {
return jwt.sign({ id: user._id, username: user.username }, SECRET, { expiresIn: '1d' });
}
function authMiddleware(req, res, next) {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.sendStatus(401);
try {
const decoded = jwt.verify(token, SECRET);
req.user = decoded;
next();
} catch (err) {
return res.sendStatus(403);
}
}
async function getActiveUser(req) {
if (!req.user?.username) return null;
return await UserService.getUserByUsername(req.user.username);
}
module.exports = { generateToken, authMiddleware, getActiveUser };