mirror of
https://github.com/Permissionless-Software-Foundation/x402-base-facilitator.git
synced 2026-09-21 16:52:01 -07:00
39 lines
828 B
JavaScript
39 lines
828 B
JavaScript
const passport = require('koa-passport')
|
|||
|
|
const User = require('../src/models/users')
|
||
|
|
const Strategy = require('passport-local')
|
||
|
|
|
||
|
|
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'
|
||
|
|
}, async (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)
|
||
|
|
}
|
||
|
|
}))
|