2022-09-08 08:58:39 -07:00
|
|
|
// import passport from 'koa-passport';
|
|
|
|
|
import User from '../src/adapters/localdb/models/users.js'
|
|
|
|
|
import Strategy from 'passport-local'
|
2021-07-13 08:57:57 -07:00
|
|
|
|
|
|
|
|
async function passportCallback (email, password, done) {
|
|
|
|
|
try {
|
|
|
|
|
const user = await User.findOne({ email })
|
|
|
|
|
if (!user) {
|
|
|
|
|
return done(null, false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const isMatch = await user.validatePassword(password)
|
|
|
|
|
|
|
|
|
|
if (!isMatch) {
|
|
|
|
|
return done(null, false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
done(null, user)
|
|
|
|
|
} catch (err) {
|
|
|
|
|
done(err)
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
return done(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-08 08:58:39 -07:00
|
|
|
function applyPassportMods (passport) {
|
|
|
|
|
passport.serializeUser((user, done) => {
|
|
|
|
|
done(null, user.id)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
passport.deserializeUser(async (id, done) => {
|
|
|
|
|
try {
|
|
|
|
|
const user = await User.findById(id, '-password')
|
|
|
|
|
done(null, user)
|
|
|
|
|
} catch (err) {
|
|
|
|
|
done(err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
passport.use(
|
|
|
|
|
'local',
|
|
|
|
|
new Strategy(
|
|
|
|
|
{
|
|
|
|
|
usernameField: 'email',
|
|
|
|
|
passwordField: 'password'
|
|
|
|
|
},
|
|
|
|
|
passportCallback
|
|
|
|
|
)
|
|
|
|
|
)
|
2022-09-17 14:18:16 -07:00
|
|
|
|
|
|
|
|
return true
|
2022-09-08 08:58:39 -07:00
|
|
|
}
|
|
|
|
|
|
2021-07-13 08:57:57 -07:00
|
|
|
// For testing
|
2022-09-08 08:58:39 -07:00
|
|
|
// export default { passport, passportCallback };
|
2022-09-17 14:18:16 -07:00
|
|
|
// export default applyPassportMods
|
|
|
|
|
export { applyPassportMods, passportCallback }
|