Skip to content

Instantly share code, notes, and snippets.

@tilleps
Created September 7, 2023 09:37
Show Gist options
  • Save tilleps/185c81baa4b943f81d101a8b2a6b547b to your computer and use it in GitHub Desktop.
Save tilleps/185c81baa4b943f81d101a8b2a6b547b to your computer and use it in GitHub Desktop.
PassportJS promise support workaround
//
// Add Promise support for PassportJS: req.logIn() and req.logOut()
//
import { promisify } from "node:util";
import passportHttpRequest from "passport/lib/http/request.js";
// Workaround: Convert to promises before passport.initialize()
app.use(function (req, res, next) {
req.logIn = promisify(passportHttpRequest.logIn);
req.logOut = promisify(passportHttpRequest.logOut);
next();
});
app.use(passport.initialize());
app.use(passport.session());
app.get("/login", async function (req, res, next) {
try {
const user = { id: "1234" };
await req.login(user, { keepSessionInfo: true });
res.send("LOGGED IN");
} catch (err) {
return next(err);
}
});
app.get("/logout", async function (req, res, next) {
try {
await req.logout({ keepSessionInfo: true });
res.send("LOGGED OUT");
} catch (err) {
return next(err);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment