Skip to content

Instantly share code, notes, and snippets.

@thomasstr
Created October 24, 2018 06:38
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 thomasstr/593fdda60022fb4fb4c0edffcf7aa3a6 to your computer and use it in GitHub Desktop.
Save thomasstr/593fdda60022fb4fb4c0edffcf7aa3a6 to your computer and use it in GitHub Desktop.
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