Skip to content

Instantly share code, notes, and snippets.

@nodebotanist
Last active April 13, 2016 16:58
Show Gist options
  • Save nodebotanist/2eae1d9a36b47f5b2853a29ceb47326b to your computer and use it in GitHub Desktop.
Save nodebotanist/2eae1d9a36b47f5b2853a29ceb47326b to your computer and use it in GitHub Desktop.
OAuth 2 source code
h1 Hello!
a(href="/login") Log in with GitHub
'use strict'
let express = require('express')
let passport = require('passport')
let Strategy = require('passport-github').Strategy
let dotenv = require('dotenv').config()
passport.use(new Strategy({
clientID: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
callbackURL: 'http://localhost:1337/callback'
},
function(accessToken, refreshToken, profile, cb) {
return cb(null, profile)
}))
passport.serializeUser(function(user, cb) {
cb(null, user)
})
passport.deserializeUser(function(obj, cb) {
cb(null, obj)
})
let app = express()
app.use(require('cookie-parser')())
app.use(require('body-parser').urlencoded({ extended: true }))
app.use(require('express-session')({ secret: 'keyboard cat', resave: true, saveUninitialized: true }))
app.use(passport.initialize())
app.use(passport.session())
app.set('view engine', 'jade')
app.get('/',
function(req, res){
res.render('hello')
})
app.get('/login',
passport.authenticate('github'))
app.get('/callback',
passport.authenticate('github', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/profile')
})
app.get('/profile',
require('connect-ensure-login').ensureLoggedIn(),
function(req, res){
console.log(req.user)
res.render('user', { user: req.user })
})
app.get('/logout', function(req, res){
req.logout()
res.redirect('/')
})
app.listen(1337)
{
"name": "oauth-webinar-source",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.15.0",
"connect-ensure-login": "^0.1.1",
"cookie-parser": "^1.4.1",
"dotenv": "^2.0.0",
"express": "^4.13.4",
"express-session": "^1.13.0",
"jade": "^1.11.0",
"passport": "^0.3.2",
"passport-github": "^1.1.0"
}
}
p Hello, #{user.username} (a.k.a #{user.displayName}!)
a(href="/logout") Logout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment