Created
October 24, 2018 06:38
-
-
Save thomasstr/593fdda60022fb4fb4c0edffcf7aa3a6 to your computer and use it in GitHub Desktop.
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
var express = require('express') | |
, session = require('express-session') | |
, passport = require('passport') | |
, Strategy = require('./lib').Strategy | |
, app = express() | |
, path = require('path') | |
, engines = require('consolidate') | |
const conn = require('./knex/MySQL'); | |
passport.serializeUser(function(user, done) { | |
done(null, user); | |
}); | |
passport.deserializeUser(function(obj, done) { | |
done(null, obj); | |
}); | |
var scopes = ['identify', 'connections']; | |
passport.use(new Strategy({ | |
clientID: 'YOUR_ID', | |
clientSecret: 'YOUR_SECRET', | |
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.use(express.static(path.join(__dirname, 'views'))); | |
app.set('view engine', 'ejs'); | |
app.get('/', passport.authenticate('discord', { scope: scopes }), function(req, res) {}); | |
app.get('/callback', | |
passport.authenticate('discord', { failureRedirect: '/' }), function(req, res) { res.redirect('/info') } // auth success | |
); | |
app.get('/logout', function(req, res) { | |
req.logout(); | |
res.redirect('/nolink'); | |
}); | |
app.get('/nolink', function(req, res) { | |
res.sendFile(path.join(__dirname,'views', 'nolink.html')); | |
}); | |
app.get('/linked', function(req, res) { | |
res.sendFile(path.join(__dirname,'views', 'linked.html')); | |
}); | |
app.get('/info', checkAuth, function(req, res) { | |
//console.log(req.user) | |
// res.json(req.user); | |
var result = req.user; | |
var connections = result.connections; | |
conn.userExists(result.id).then( user => { | |
if (user) { | |
return res.redirect('/linked'); | |
} else { | |
var hasFacebook = function(hasType) { | |
var i = null; | |
for (i = 0; connections.length > i; i += 1) { | |
if (connections[i].type == hasType) { | |
var o = [] | |
var facebook_name = connections[i].name; | |
var discord_id = result.id; | |
var final_data = { | |
"facebook_name" : facebook_name, | |
"discord_id" : discord_id | |
} | |
o.push(final_data); | |
return JSON.stringify(o); | |
} | |
} | |
return false; | |
} | |
var facebook = JSON.parse(hasFacebook("facebook")); | |
if (facebook != false) { | |
// var parsed = JSON.parse(facebook); | |
conn.createUser({ | |
facebook_name: facebook[0].facebook_name, | |
discord_id: facebook[0].discord_id | |
}); | |
res.render('info', { parsed : facebook}); | |
// console.log(facebook[0].discord_id) | |
} else { | |
res.redirect('/logout'); | |
} | |
} | |
}) | |
// // console.log(parsed); | |
// res.render('info', { parsed : parsed}); | |
// } else { | |
// res.redirect('/logout'); | |
// } | |
}); | |
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/') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment