From 4c8e9f6acc2fcc9060a9fe41458174d372e8cd23 Mon Sep 17 00:00:00 2001 From: Adrian Obelmejias Date: Thu, 11 Feb 2016 16:21:05 -0500 Subject: [PATCH] Add passport --- config/config.js | 6 ++++-- config/passport.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 config/passport.js diff --git a/config/config.js b/config/config.js index a89b249..f386787 100644 --- a/config/config.js +++ b/config/config.js @@ -5,10 +5,12 @@ const config = { port: process.env.PORT || 5000 }, development: { - session: 'secret-boilerplate-token' + session: 'secret-boilerplate-token', + database: 'mongodb://localhost:27017/koa2-boilerplate' }, production: { - session: 'secret-boilerplate-token' + session: 'secret-boilerplate-token', + database: 'mongodb://localhost:27017/koa2-boilerplate' } } diff --git a/config/passport.js b/config/passport.js new file mode 100644 index 0000000..cd446ca --- /dev/null +++ b/config/passport.js @@ -0,0 +1,30 @@ +import passport from 'koa-passport'; +import User from '../src/models/users' +import { Strategy } from 'passport-local' + +passport.serializeUser((user, done) => { + done(null, user.id) +}) + +passport.deserializeUser(async (id, done) => { + try { + const user = await User.findById(id) + done(null, user) + } catch(err) { + done(err) + } +}) + +passport.use('local', new Strategy({ + usernameField: 'username', + passwordField: 'password' +}, async (email, password, done) => { + try { + const user = await User.findOne({ email, password }) + if(!user) { return done(null, false) } + + done(null, user) + } catch(err) { + return done(err) + } +}))