32 lines
750 B
JavaScript
32 lines
750 B
JavaScript
/**
|
|
* Config: Passport.js
|
|
*/
|
|
|
|
const StrategyJWT = require(`passport-jwt`).Strategy;
|
|
const ExtractJWT = require(`passport-jwt`).ExtractJwt;
|
|
const userUtils = require(`../controllers/users/utils`);
|
|
const db = require(`../db`);
|
|
|
|
module.exports = (passport) => {
|
|
const options = {};
|
|
options.jwtFromRequest = ExtractJWT.fromAuthHeaderAsBearerToken();
|
|
options.secretOrKey = process.env.tokenSecret;
|
|
|
|
passport.use(
|
|
new StrategyJWT(options, async (jwtPayload, done) => {
|
|
let user;
|
|
try {
|
|
user = await db.getById(`user`, jwtPayload.id);
|
|
} catch (error) {
|
|
console.log(error);
|
|
return done(error, null);
|
|
}
|
|
|
|
if (!user) {
|
|
return done(null, false);
|
|
}
|
|
return done(null, userUtils.convertToPublicFormat(user));
|
|
})
|
|
);
|
|
};
|