43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
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);
|
|
}));
|