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
|
|
})
|
|
})
|
|
})
|
|
}
|