diff --git a/gulpfile.js b/gulpfile.js index c55daf01da..af48fb9746 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -126,7 +126,7 @@ gulp.task('serve', function(cb) { script: paths.server, ext: '.js .json', ignore: paths.serverIgnore, - exec: path.join(__dirname, 'node_modules/.bin/babel-node'), + exec: '%cd%/node_modules/.bin/babel-node', env: { 'NODE_ENV': 'development', 'DEBUG': process.env.DEBUG || 'freecc:*' diff --git a/package.json b/package.json index 1a994358a5..4e96eda08e 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "nodemailer": "~1.3.0", "object.assign": "^3.0.0", "passport-facebook": "^2.0.0", + "passport-github": "^0.1.5", "passport-google-oauth2": "^0.1.6", "passport-linkedin-oauth2": "^1.2.1", "passport-local": "^1.0.0", diff --git a/seed/challenges/basic-bonfires.json b/seed/challenges/basic-bonfires.json index 51bb15e0e2..7296435fa3 100644 --- a/seed/challenges/basic-bonfires.json +++ b/seed/challenges/basic-bonfires.json @@ -1074,9 +1074,12 @@ ], "tests": [ "assert.deepEqual(unite([1, 3, 2], [5, 2, 1, 4], [2, 1]), [1, 3, 2, 5, 4], 'should return the union of the given arrays');", - "assert.deepEqual(unite([1, 3, 2], [1, [5]], [2, [4]]), [1, 3, 2, [5], [4]], 'should not flatten nested arrays');" + "assert.deepEqual(unite([1, 3, 2], [1, [5]], [2, [4]]), [1, 3, 2, [5], [4]], 'should not flatten nested arrays');", + "assert.deepEqual(unite([1, 2, 3], [5, 2, 1]), [1, 2, 3, 5], 'should correctly handle exactly two arguments');", + "assert.deepEqual(unite([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]), [ 1, 2, 3, 5, 4, 6, 7, 8 ], 'should correctly handle higher numbers of arguments');" ], "MDNlinks": [ + "Arguments object", "Array.reduce()" ], "challengeType": 5, diff --git a/seed/challenges/basic-javascript.json b/seed/challenges/basic-javascript.json index ab02c594ae..5a2a5a28eb 100644 --- a/seed/challenges/basic-javascript.json +++ b/seed/challenges/basic-javascript.json @@ -1069,6 +1069,35 @@ ], "challengeType": 1 }, + { + "id":"cf1111c1c13feddfaeb3bdef", + "name":"Inverting a Match", + "dashedName":"waypoint-inverting-a-match", + "difficulty":"9.987", + "description":[ + "", + "Use /\\S+/gi; to match everything that ins't a space in the string", + "You can invert any match by using the uppercase version of the selector \\s versus \\S for example" + ], + "tests":[ + "assert(test === 36, 'Your RegEx should have found seven spaces in the testString');", + "assert(editorValue.match(/\\/\\\\S\\/gi/gi), 'You should be using the following expression /\\S+/gi to find the spaces in the testString');" + ], + "challengeSeed":[ + "var test = (function(){", + " var testString = \"How many spaces are there in this sentance.\";", + "", + "//Do Not Modify Above", + "", + " var expression = /.+/gi;", + "", + "//Do Not Modify Below", + "", + " return(testString.match(expression).length);", + "})();(function(){return(test);})();" + ], + "challengeType":1 + }, { "id":"cf1111c1c12feddfaeb9bdef", "name":"Creating a slots machine", @@ -1080,7 +1109,7 @@ "For this we will need to generate three random numbers between 1 and 5 to represent the possible values of each individual slot", "Store the three random numbers in slotOne, slotTwo and slotThree", "Generate the random numbers by using the system we used earlier in /challenges/random-whole-numbers-in-a-range", - " Math.floor(Math.random() * (5 - 1 + 1)) + 1; ." + " Math.floor(Math.random() * (5 - 1 + 1)) + 1; " ], "tests":[ "assert(typeof(runSlots($('.slot'))[0]) == 'number', 'SlotOne should be a random number');", diff --git a/server/passport-providers.js b/server/passport-providers.js index b60ad8f51e..ddd29f64db 100644 --- a/server/passport-providers.js +++ b/server/passport-providers.js @@ -127,5 +127,19 @@ module.exports = { state: process.env.LINKEDIN_STATE }, failureFlash: true + }, + 'github-login': { + provider: 'github', + authScheme: 'oauth2', + module: 'passport-github', + authPath: '/auth/github', + callbackURL: '/auth/github/callback', + callbackPath: '/auth/github/callback', + successRedirect: successRedirect, + failureRedirect: failureRedirect, + clientID: process.env.GITHUB_ID, + clientSecret: process.env.GITHUB_SECRET, + scope: ['email'], + failureFlash: true } }; diff --git a/server/views/account/signin.jade b/server/views/account/signin.jade index c19384964b..878b278ba4 100644 --- a/server/views/account/signin.jade +++ b/server/views/account/signin.jade @@ -2,18 +2,21 @@ extends ../layout block content .jumbotron.text-center h2 Sign in with one of these options: - a.btn.btn-lg.btn-block.btn-google-plus.btn-social(href='/auth/google') - i.fa.fa-google-plus - | Sign in with Google - a.btn.btn-lg.btn-block.btn-facebook.btn-social(href='/auth/facebook') - i.fa.fa-facebook - | Sign in with Facebook - a.btn.btn-lg.btn-block.btn-linkedin.btn-social(href='/auth/linkedin') - i.fa.fa-linkedin - | Sign in with LinkedIn + a.btn.btn-lg.btn-block.btn-twitter.btn-social(href='/auth/github') + i.fa.fa-github + | Sign in with Github a.btn.btn-lg.btn-block.btn-twitter.btn-social(href='/auth/twitter') i.fa.fa-twitter | Sign in with Twitter + a.btn.btn-lg.btn-block.btn-facebook.btn-social(href='/auth/facebook') + i.fa.fa-facebook + | Sign in with Facebook + a.btn.btn-lg.btn-block.btn-google-plus.btn-social(href='/auth/google') + i.fa.fa-google-plus + | Sign in with Google + a.btn.btn-lg.btn-block.btn-linkedin.btn-social(href='/auth/linkedin') + i.fa.fa-linkedin + | Sign in with LinkedIn br p a(href="/email-signup") Or sign up using your email address here.