aboutsummaryrefslogtreecommitdiffstats
path: root/passport.js
blob: 54c4d3191adf17942d27fcca773f962552a62d2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const passport = require("passport");
const jwt = require("passport-jwt");
const config = require("./config");

const l = require("pino")();

function cookieExtractor(req) {
  if (req && req.cookies) return req.cookies["token"];
  return null;
}

module.exports = db => {
  passport.use(
    new jwt.Strategy(
      {
        jwtFromRequest: jwt.ExtractJwt.fromExtractors([
          jwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
          cookieExtractor
        ]),
        secretOrKey: config.jwt
      },
      async (payload, next) => {
        try {
          let user = await db.User.findOne({
            where: {
              username: payload.username
            }
          });
          next(null, user);
        } catch (e) {
          l.error(e);
          next(null, { username: "guest" });
        }
      }
    )
  );

  return passport;
};