Skip to content

Instantly share code, notes, and snippets.

@henryoswald
Last active August 16, 2016 15:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save henryoswald/f86f3a08f2b072ee68e8cbb12c6073d7 to your computer and use it in GitHub Desktop.
Save henryoswald/f86f3a08f2b072ee68e8cbb12c6073d7 to your computer and use it in GitHub Desktop.
passport.js example
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 = '<form action="/login" method="post"> <input name="username" id="username" type="text" placeholder="Your username" /> <input name="password" id="password" type="password" placeholder="Your password"/> <input type="submit" /> </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!');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment