var express = require('express'); var app = express(); var cookieParser = require("cookie-parser") var bodyParser = require("body-parser") var passport = require('passport'); var session = require('express-session'); var LocalStrategy = require('passport-local').Strategy; app.use(cookieParser()) app.use(bodyParser()) app.use(session({ secret: 'keyboard cat' })) var form = '
' app.use(passport.initialize()); app.use(passport.session()); users = {"bob@something.com":{password:"1234", email:"bob@something.com", dropbox:"ignore", somethingelse:"helloo", firstName:"bob"}} var findUser = function(username, done){ console.log(username, "finding user") done(null,users[username]) } var createLiteUser = function(user){ var liteUser = { email: user.email, firstName: user.firstName } return liteUser; } function authenticationMiddleware () { return function (req, res, next) { if (req.isAuthenticated()) { return next() } res.redirect('/login') } } passport.use(new LocalStrategy(function(username, password, done){ console.log("local stragegy", username, password) findUser(username, function(err, user){ console.log("found user", user) if(password != user.password){ console.log("password does not match for user", username) done() } else { done(null, user) } }) })) passport.serializeUser(function (user, cb) { console.log("serializing user to liteuser") var liteUser = createLiteUser(user) cb(null, liteUser) }) passport.deserializeUser(function (user, cb) { console.log("deserializeUser", user) cb(null, user) }) app.get('/', authenticationMiddleware(), function (req, res) { console.log(req.session, req.user) res.send('Hello you are logged in!'); }); app.get('/login', function (req, res) { res.send(form); }); app.post('/login', passport.authenticate('local', { failureRedirect: '/login', successRedirect:"/" }), function (req, res) { res.send('Hello World!'); }); app.get('/logout', authenticationMiddleware(), function (req, res) { req.session.destroy() res.send("logged out") }); app.listen(5000, function () { console.log('Example app listening on port 5000!'); });