diff --git a/gulpfile.js b/gulpfile.js index 7a657a2a49..1a3177de62 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,7 +9,7 @@ var gulp = require('gulp'), eslint = require('gulp-eslint'); var paths = { - server: './server.js', + server: './server/server.js', serverIgnore: [] }; diff --git a/package.json b/package.json index 1b5f3b319c..81dbf86f39 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "npm": "2.3.0" }, "scripts": { - "start": "node app.js", + "start": "node server/server.js", "lint": "eslint --ext=.js,.jsx .", "test": "mocha" }, diff --git a/server/boot/passport.js b/server/boot/passport.js new file mode 100644 index 0000000000..6c3c01bef4 --- /dev/null +++ b/server/boot/passport.js @@ -0,0 +1,68 @@ +var express = require('express'), + passport = require('passport'), + passportConf = require('../../config/passport'); + +var router = express.Router(); +var passportOptions = { + successRedirect: '/', + failureRedirect: '/login' +}; + +router.all('/account', passportConf.isAuthenticated); + +router.get('/auth/twitter', passport.authenticate('twitter')); + +router.get( + '/auth/twitter/callback', + passport.authenticate('twitter', { + successRedirect: '/', + failureRedirect: '/login' + }) +); + +router.get( + '/auth/linkedin', + passport.authenticate('linkedin', { + state: 'SOME STATE' + }) +); + +router.get( + '/auth/linkedin/callback', + passport.authenticate('linkedin', passportOptions) +); + +router.get( + '/auth/facebook', + passport.authenticate('facebook', {scope: ['email', 'user_location']}) +); + +router.get( + '/auth/facebook/callback', + passport.authenticate('facebook', passportOptions), function (req, res) { + res.redirect(req.session.returnTo || '/'); + } +); + +router.get('/auth/github', passport.authenticate('github')); + +router.get( + '/auth/github/callback', + passport.authenticate('github', passportOptions), function (req, res) { + res.redirect(req.session.returnTo || '/'); + } +); + +router.get( + '/auth/google', + passport.authenticate('google', {scope: 'profile email'}) +); + +router.get( + '/auth/google/callback', + passport.authenticate('google', passportOptions), function (req, res) { + res.redirect(req.session.returnTo || '/'); + } +); + +module.exports = router; diff --git a/server/boot/user.js b/server/boot/user.js index f6ad37002a..5fbe0e1d0e 100644 --- a/server/boot/user.js +++ b/server/boot/user.js @@ -1,16 +1,18 @@ var _ = require('lodash'), + R = require('ramda'), async = require('async'), crypto = require('crypto'), nodemailer = require('nodemailer'), passport = require('passport'), + moment = require('moment'), + express = require('express'), + debug = require('debug')('freecc:cntr:userController'), + User = require('../../models/User'), secrets = require('../../config/secrets'), - moment = require('moment'), - debug = require('debug')('freecc:cntr:userController'), - resources = require('./../resources/resources'), - R = require('ramda'); - + resources = require('./../resources/resources'); +var router = express.Router(); router.get('/login', function(req, res) { res.redirect(301, '/signin'); }); diff --git a/server/boot/utility.js b/server/boot/utility.js index 6107347de4..8e1c9f8e9f 100644 --- a/server/boot/utility.js +++ b/server/boot/utility.js @@ -5,7 +5,7 @@ var express = require('express'), Slack = require('node-slack'), request = require('request'), debug = require('debug')('freecc:cntr:resources'), - constantStrings = require('./constantStrings.json'), + constantStrings = require('../resources/constantStrings.json'), User = require('../../models/User'), Challenge = require('./../../models/Challenge'), diff --git a/server/resources/resources.js b/server/resources/resources.js index 8729b560eb..35daef88c2 100644 --- a/server/resources/resources.js +++ b/server/resources/resources.js @@ -41,12 +41,12 @@ Array.zip = function(left, right, combinerFunction) { if (!challengeMap) { var localChallengeMap = {}; var files = fs.readdirSync( - path.join(__dirname, '/../seed_data/challenges') + path.join(__dirname, '../../seed_data/challenges') ); var keyCounter = 0; files = files.map(function (file) { return require( - path.join(__dirname, '/../seed_data/challenges/' + file) + path.join(__dirname, '../../seed_data/challenges/' + file) ); }); files = files.sort(function (a, b) { diff --git a/server/server.js b/server/server.js index 419d9344b9..dccaac96d0 100755 --- a/server/server.js +++ b/server/server.js @@ -33,7 +33,6 @@ var express = require('express'), * routers. */ homeRouter = require('./boot/home'), - resourcesRouter = require('./resources/resources'), userRouter = require('./boot/user'), fieldGuideRouter = require('./boot/fieldGuide'), challengeMapRouter = require('./boot/challengeMap'), @@ -42,12 +41,12 @@ var express = require('express'), redirectsRouter = require('./boot/redirects'), utilityRouter = require('./boot/utility'), storyRouter = require('./boot/story'), + passportRouter = require('./boot/passport'), /** * API keys and Passport configuration. */ - secrets = require('./../config/secrets'), - passportConf = require('./../config/passport'); + secrets = require('./../config/secrets'); /** * Create Express server. @@ -199,7 +198,7 @@ app.use(function (req, res, next) { }); app.use( - express.static(path.join(__dirname, '/public'), { maxAge: 86400000 }) + express.static(path.join(__dirname, '../public'), { maxAge: 86400000 }) ); app.use(function (req, res, next) { @@ -216,7 +215,6 @@ app.use(function (req, res, next) { // add sub routers app.use(homeRouter); -app.use(resourcesRouter); app.use(userRouter); app.use(fieldGuideRouter); app.use(challengeMapRouter); @@ -225,74 +223,12 @@ app.use(jobsRouter); app.use(redirectsRouter); app.use(utilityRouter); app.use(storyRouter); - +app.use(passportRouter); /** * OAuth sign-in routes. */ -app.all('/account', passportConf.isAuthenticated); -var passportOptions = { - successRedirect: '/', - failureRedirect: '/login' -}; - -app.get('/auth/twitter', passport.authenticate('twitter')); - -app.get( - '/auth/twitter/callback', - passport.authenticate('twitter', { - successRedirect: '/', - failureRedirect: '/login' - }) -); - -app.get( - '/auth/linkedin', - passport.authenticate('linkedin', { - state: 'SOME STATE' - }) -); - -app.get( - '/auth/linkedin/callback', - passport.authenticate('linkedin', passportOptions) -); - -app.get( - '/auth/facebook', - passport.authenticate('facebook', {scope: ['email', 'user_location']}) -); - -app.get( - '/auth/facebook/callback', - passport.authenticate('facebook', passportOptions), function (req, res) { - res.redirect(req.session.returnTo || '/'); - } -); - -app.get('/auth/github', passport.authenticate('github')); - -app.get( - '/auth/github/callback', - passport.authenticate('github', passportOptions), function (req, res) { - res.redirect(req.session.returnTo || '/'); - } -); - -app.get( - '/auth/google', - passport.authenticate('google', {scope: 'profile email'}) -); - -app.get( - '/auth/google/callback', - passport.authenticate('google', passportOptions), function (req, res) { - res.redirect(req.session.returnTo || '/'); - } -); - - /** * 500 Error Handler. */