From 54677c68f50b7c105a1f6cc5e9593877781fc8d6 Mon Sep 17 00:00:00 2001 From: Mateja Date: Sat, 10 Jul 2021 22:57:13 +0200 Subject: Implemented JWT authentication using Passport.js --- server/config/passport.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 server/config/passport.js (limited to 'server/config') diff --git a/server/config/passport.js b/server/config/passport.js new file mode 100644 index 0000000..02ad4f6 --- /dev/null +++ b/server/config/passport.js @@ -0,0 +1,29 @@ +const passport = require('passport'); +const jwtStrategy = require('passport-jwt').Strategy; +const extractJwt = require('passport-jwt').ExtractJwt; + +const {masterKey} = require("../config/env"); +const User = require('../models/User'); + +const options = { + jwtFromRequest: extractJwt.fromAuthHeaderAsBearerToken(), + secretOrKey: masterKey +}; + +const jwtStrategyCallback = (jwtPayload, done) => { + // Try to find user + User.findOne({_id: jwtPayload.sub}, (err, user) => { + // Database error + if (err) + return done(err, false); + + // No user found + if (!user) + return done(null, false); + + // Successful login + return done(null, user); + }) +}; + +passport.use(new jwtStrategy(options, jwtStrategyCallback)); -- cgit v1.2.3