import { validateJwtToken } from '#util/jwtUtils.js'; import { DbUser } from '#db/schemas/index.js'; /** * @param options {AuthValidationOptions} * @returns {(function(*, *, *): void)|*} */ export function validateAuth(options) { return async function (req, res, next) { const auth = (req.auth = validateJwtToken(req.headers.authorization)); if (!auth) { res.status(401).send('Unauthorized'); return; } const user = (req.user = await DbUser.findById(auth.id).exec()); if (options.roles && !options.roles.includes(user.type)) { res.status(401).send('Unauthorized'); return; } next(); }; } class AuthValidationOptions { roles; }