You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

43 lines
1.2 KiB

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