| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const passport = require('passport');
- const JwtStrategy = require('passport-jwt').Strategy;
- const { ExtractJwt } = require('passport-jwt');
- const LocalStratergy = require('passport-local').Strategy;
- const LocalAPIKeyStrategy = require('passport-localapikey').Strategy;
- const bcrypt = require('bcryptjs');
- const config = require('./config');
- const { getUser } = require('./db/user');
- const jwtOptions = {
- jwtFromRequest: ExtractJwt.fromHeader('authorization'),
- secretOrKey: config.JWT_SECRET,
- };
- passport.use(
- new JwtStrategy(jwtOptions, async (payload, done) => {
- try {
- const user = await getUser({ email: payload.sub });
- if (!user) return done(null, false);
- return done(null, user);
- } catch (err) {
- return done(err);
- }
- })
- );
- const localOptions = {
- usernameField: 'email',
- };
- passport.use(
- new LocalStratergy(localOptions, async (email, password, done) => {
- try {
- const user = await getUser({ email });
- if (!user) {
- return done(null, false);
- }
- const isMatch = await bcrypt.compare(password, user.password);
- if (!isMatch) {
- return done(null, false);
- }
- return done(null, user);
- } catch (err) {
- return done(err);
- }
- })
- );
- passport.use(
- new LocalAPIKeyStrategy(async (apikey, done) => {
- try {
- const user = await getUser({ apikey });
- if (!user) {
- return done(null, false);
- }
- return done(null, user);
- } catch (err) {
- return done(err);
- }
- })
- );
|