mirror of
https://github.com/PretendoNetwork/website.git
synced 2026-04-17 14:36:12 -05:00
56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
/*
|
|
|
|
passport.config.js -
|
|
Passport setup file. handles authentication strategy and session setup
|
|
|
|
*/
|
|
|
|
// imports
|
|
const LocalStrategy = require('passport-local').Strategy;
|
|
const passport = require('passport');
|
|
const bcrypt = require('bcrypt');
|
|
const adminUserModel = require('./models/admin-user').adminUserModel;
|
|
|
|
// setup authentication
|
|
module.exports = (app) => {
|
|
app.use(passport.initialize());
|
|
app.use(passport.session());
|
|
passport.use('adminUserStrategy', new LocalStrategy(
|
|
(username, password, done) => {
|
|
// find user in database
|
|
adminUserModel.findByUsername(username).then((user) => {
|
|
if (!user) {
|
|
// user doesnt exist
|
|
return done(null, false, {message: 'Incorrect user'});
|
|
}
|
|
|
|
bcrypt.compare(password, user.password, (err, res) => {
|
|
if (err || !res) {
|
|
// error comparing hashes
|
|
return done(null, false, {message: 'Incorrect password'});
|
|
}
|
|
|
|
// password is correct, return user
|
|
return done(null, user);
|
|
|
|
});
|
|
}).catch((err) => {
|
|
if (err) {
|
|
// error finding in database
|
|
return done(null, false, {code: 500});
|
|
}
|
|
});
|
|
}
|
|
));
|
|
//Configuring app to have sessions
|
|
passport.serializeUser(function(user, done) {
|
|
done(null, user.id);
|
|
});
|
|
|
|
passport.deserializeUser(function(id, done) {
|
|
adminUserModel.findById(id, function(err, user) {
|
|
done(err, user);
|
|
});
|
|
});
|
|
};
|