| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | var LocalStrategy = require('passport-local').Strategy;module.exports = function(passport, appconfig) {    // Serialization user methods    passport.serializeUser(function(user, done) {        done(null, user._id);    });    passport.deserializeUser(function(id, done) {        let user = db.User.find({ id });        if(user) {            done(null, user);        } else {            done(err, null);        }    });    // Setup local user authentication strategy    passport.use(        'local',        new LocalStrategy({            usernameField : 'email',            passwordField : 'password',            passReqToCallback : true        },        function(req, uEmail, uPassword, done) {            db.User.findOne({ 'email' :  uEmail }).then((user) => {                if (user) {                    user.validatePassword(uPassword).then((isValid) => {                        return (isValid) ? done(null, user) : done(null, false);                    });                } else {                    return done(null, false);                }            }).catch((err) => {                done(err);            });        })    );    // Check for admin access    db.onReady.then(() => {        if(db.User.count() < 1) {            winston.info('No administrator account found. Creating a new one...');            if(db.User.insert({                email: appconfig.admin,                firstName: "Admin",                lastName: "Admin",                password: "admin123"            })) {                winston.info('Administrator account created successfully!');            } else {                winston.error('An error occured while creating administrator account: ');            }        }        return true;    });};
 |