55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
var express = require('express')
|
|
, session = require('express-session')
|
|
, passport = require('passport')
|
|
, Strategy = require('../lib').Strategy
|
|
, app = express();
|
|
|
|
passport.serializeUser(function(user, done) {
|
|
done(null, user);
|
|
});
|
|
passport.deserializeUser(function(obj, done) {
|
|
done(null, obj);
|
|
});
|
|
|
|
var scopes = ['image', 'email'];
|
|
|
|
passport.use(new Strategy({
|
|
clientID: '',
|
|
clientSecret: '',
|
|
callbackURL: 'http://localhost:5000/callback',
|
|
scope: scopes
|
|
}, function(accessToken, refreshToken, profile, done) {
|
|
process.nextTick(function() {
|
|
return done(null, profile);
|
|
});
|
|
}));
|
|
|
|
app.use(session({
|
|
secret: 'keyboard cat',
|
|
resave: false,
|
|
saveUninitialized: false
|
|
}));
|
|
app.use(passport.initialize());
|
|
app.use(passport.session());
|
|
app.get('/', passport.authenticate('icynet', { scope: scopes }), function(req, res) {});
|
|
app.get('/callback',
|
|
passport.authenticate('icynet', { failureRedirect: '/' }), function(req, res) { res.redirect('/info') } // auth success
|
|
);
|
|
app.get('/logout', function(req, res) {
|
|
req.logout();
|
|
res.redirect('/');
|
|
});
|
|
app.get('/info', checkAuth, function(req, res) {
|
|
res.json(req.user);
|
|
});
|
|
|
|
function checkAuth(req, res, next) {
|
|
if (req.isAuthenticated()) return next();
|
|
res.send('not logged in :(');
|
|
}
|
|
|
|
app.listen(5000, function (err) {
|
|
if (err) return console.log(err)
|
|
console.log('Listening at http://localhost:5000/')
|
|
})
|