/* eslint-disable func-names */ import { Strategy as LocalStrategy } from "passport-local"; import { BasicStrategy } from "passport-http"; import { Strategy as CustomStrategy } from "passport-custom"; import Users from "../models/users"; import { jobsHeaderKey, jobsHeaderValue } from "../config"; export default (passport) => { passport.serializeUser((user, done) => { done(null, user); }); passport.deserializeUser((user, done) => { done(null, user); }); passport.use( "user", new LocalStrategy( { usernameField: "email", passwordField: "password", }, (email, password, done) => { Users.findOne({ email }) .then((user) => { if (!user || !user.validPassword(password)) { return done( null, false, "Oops! Identifiants incorrects" ); } return done(null, user); }) .catch(done); } ) ); passport.use( "basic", new BasicStrategy((email, password, done) => { Users.findOne({ email }) .then((user) => { if (!user || !user.validPassword(password)) { return done( null, false, "Oops! Identifiants incorrects" ); } return done(null, user); }) .catch(done); }) ); passport.use( "jobs", new CustomStrategy((req, next) => { const apiKey = req.headers[jobsHeaderKey]; if (apiKey === jobsHeaderValue) { return next(null, { username: "jobs", }); } return next(null, false, "Oops! Identifiants incorrects"); }) ); };