module.exports = (passport, Strategy, user, crypto) => { passport.use(new Strategy((username, password, cb) => { if (username && password) { user.findOne({ nick: username }, (err, user) => { if (err) { return cb(err) } if (!user) { return cb(null, false) } if (user.nick === username && user.password === crypto.createHash('sha256').update(password).digest('base64')) { return cb(null, { nick: user.nick }) } else { return cb(null, false) } }) } else { return cb(null, false) } })) passport.serializeUser((user, cb) => { cb(null, user.nick) }) passport.deserializeUser(async (username, cb) => { user.findOne({ nick: username }, (err, user) => { if (err) { return cb(err) } return cb(null, { nick: user.nick }) }) }) }