@replyke/express
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
31 lines (30 loc) • 1.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
const config_1 = require("../config");
const requireUserAuth = (req, res, next) => {
if (req.isMaster || req.isService) {
next();
return;
}
const authHeader = req.headers["authorization"];
if (!authHeader) {
res.sendStatus(401);
return;
}
const token = authHeader.split(" ")[1];
const { accessTokenSecret } = (0, config_1.getCoreConfig)();
jsonwebtoken_1.default.verify(token, accessTokenSecret, (err, decoded) => {
if (err || !decoded || typeof decoded === "string" || !decoded.sub) {
console.warn("Unauthorized request");
res.sendStatus(403);
return;
}
req.userId = decoded.sub;
next();
});
};
exports.default = requireUserAuth;