var secret = require('.').secret, bcrypt = require('bcrypt'); const passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var HeaderAPIKeyStrategy = require('passport-headerapikey').HeaderAPIKeyStrategy; var mongoose = require('mongoose'); var Application = mongoose.model('Application'); //var User = mongoose.model('User'); const { UserService } = require('../services'); passport.use('headerapikey', new HeaderAPIKeyStrategy( { header: 'Authorization', prefix: `${process.env.AUTHORIZATION_PREFIX} ` }, false, function (apikey, done) { const salt = secret; Promise.resolve(bcrypt.hash(apikey, salt)).then(function (encryptedKey) { Application.findOne({ encryptedKey: encryptedKey }) .populate('author') .then(function (application) { if (!application) { return done({message: "Application can't be found.", status: 404}, false, false); } return done(null, application); }); }).catch(done); } )); passport.use('local', new LocalStrategy({ usernameField: 'user[email]', passwordField: 'user[password]' }, function (email, password, done) { UserService.getUserByEmail({ email }).then(function (user) { //User.findOne({ email: email }).then(function (user) { //console.log(user); if (!user || !user.validPassword(password)) { return done(null, false, { errors: { 'email ou mot de passe': 'invalide' } }); } return done(null, user); }).catch(done); }));