Last active
April 13, 2016 16:58
-
-
Save nodebotanist/2eae1d9a36b47f5b2853a29ceb47326b to your computer and use it in GitHub Desktop.
OAuth 2 source code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
h1 Hello! | |
a(href="/login") Log in with GitHub |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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