Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x | const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const JwtStrategy = require('passport-jwt').Strategy; const ExtractJwt = require('passport-jwt').ExtractJwt; const bcrypt = require('bcryptjs'); const User = require('../models/User'); // JWT Strategy Configuration const jwtOptions = { jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), secretOrKey: process.env.JWT_SECRET || 'your-secret-key-here' }; // JWT Strategy passport.use(new JwtStrategy(jwtOptions, async (jwtPayload, done) => { try { const user = await User.findById(jwtPayload.id); if (user) { return done(null, user); } return done(null, false); } catch (err) { return done(err, false); } })); // Local Strategy passport.use(new LocalStrategy( async (username, password, done) => { try { const user = await User.findByUsername(username); if (!user) return done(null, false, { message: 'Incorrect username.' }); const isValid = await bcrypt.compare(password, user.password_hash); if (!isValid) return done(null, false, { message: 'Incorrect password.' }); return done(null, user); } catch (err) { return done(err); } } )); passport.serializeUser((user, done) => done(null, user.id)); passport.deserializeUser(async (id, done) => { try { const user = await User.findById(id); done(null, user); } catch (err) { done(err); } }); module.exports = passport; |