@jmilanes/passport-remember-me
Version:
Passport strategy to authenticate users with remember me cookie.
60 lines (59 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rememberUser = exports.signOut = void 0;
const token_1 = require("./token");
const config_1 = require("./config");
function signOut(redirect) {
return (req, res, next) => {
res.clearCookie(config_1.Config.get("cookieName"));
return req.logout(() => {
if (redirect) {
return res.redirect(redirect);
}
next();
});
};
}
exports.signOut = signOut;
function redirectOrNext(res, next) {
if (config_1.Config.get("successRedirect")) {
return res.redirect(config_1.Config.get("successRedirect"));
}
else {
return next();
}
}
function rememberUser(saveToken) {
return (req, res, next) => {
var _a;
if (!req.body[config_1.Config.get("keyName")]) {
res.clearCookie(config_1.Config.get("cookieName"));
return redirectOrNext(res, next);
}
// @ts-ignore
if (!req.user || !((_a = req.user) === null || _a === void 0 ? void 0 : _a.id)) {
return redirectOrNext(res, next);
}
try {
// @ts-ignore
const { error, token } = (0, token_1.encode)(req.user.id, config_1.Config.get("salt"));
if (error) {
return redirectOrNext(res, next);
}
res.cookie(config_1.Config.get("cookieName"), token, config_1.Config.get("cookie"));
// @ts-ignore
saveToken(token, req.user.id, () => {
return redirectOrNext(res, next);
});
}
catch (e) {
if (config_1.Config.get("successRedirect")) {
return res.redirect(config_1.Config.get("successRedirect"));
}
else {
return next(e);
}
}
};
}
exports.rememberUser = rememberUser;