From 996c3e7816b934f13a1a876fa236d89bba4b4110 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Wed, 10 Jun 2015 15:12:48 -0700 Subject: [PATCH] fix make email optional --- package.json | 2 +- server/boot/a-extendUser.js | 5 +++++ server/boot/user.js | 6 ------ server/server.js | 9 +++++++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index d9fd32ff7e..acbc84c80d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "lodash": "^3.9.3", "loopback": "^2.18.0", "loopback-boot": "^2.8.0", - "loopback-component-passport": "^1.3.1", + "loopback-component-passport": "git://github.com/FreeCodeCamp/loopback-component-passport.git#feature/emailOptional", "loopback-connector-mongodb": "^1.10.0", "lusca": "~1.0.2", "method-override": "~2.3.0", diff --git a/server/boot/a-extendUser.js b/server/boot/a-extendUser.js index a719949eda..f5cb84cd52 100644 --- a/server/boot/a-extendUser.js +++ b/server/boot/a-extendUser.js @@ -2,6 +2,11 @@ var debug = require('debug')('freecc:extendUser'); module.exports = function(app) { var User = app.models.User; + // NOTE(berks): user email validation currently not needed but build in. This + // work around should let us sneak by + // see: + // https://github.com/strongloop/loopback/issues/1137#issuecomment-109200135 + delete User.validations.email; debug('setting up user hooks'); // send verification email to new camper User.afterRemote('create', function(ctx, user, next) { diff --git a/server/boot/user.js b/server/boot/user.js index 1f7c74a7c5..5f57748f36 100644 --- a/server/boot/user.js +++ b/server/boot/user.js @@ -9,12 +9,6 @@ var _ = require('lodash'), secrets = require('../../config/secrets'); module.exports = function(app) { - // NOTE(berks): user email validation currently not needed but build in. This - // work around should let us sneak by - // see: - // https://github.com/strongloop/loopback/issues/1137#issuecomment-109200135 - delete app.models.User.validations.email; - var router = app.loopback.Router(); var User = app.models.User; var Story = app.models.Story; diff --git a/server/server.js b/server/server.js index 714e5940cc..bc252012af 100755 --- a/server/server.js +++ b/server/server.js @@ -10,6 +10,7 @@ process.on('uncaughtException', function (err) { }); var R = require('ramda'), + assign = require('lodash').assign, loopback = require('loopback'), boot = require('loopback-boot'), accepts = require('accepts'), @@ -202,6 +203,7 @@ passportConfigurator.setupModels({ }); var passportOptions = { + emailOptional: true, profileToUser: function(provider, profile) { var emails = profile.emails; // NOTE(berks): get email or set to null. @@ -210,7 +212,7 @@ var passportOptions = { emails[0].value : null; - var username = provider + '.' + (profile.username || profile.id); + var username = profile.username || profile.id; var password = generateKey('password'); var userObj = { username: username, @@ -227,7 +229,10 @@ var passportOptions = { R.keys(passportProviders).map(function(strategy) { var config = passportProviders[strategy]; config.session = config.session !== false; - passportConfigurator.configureProvider(strategy, config, passportOptions); + passportConfigurator.configureProvider( + strategy, + assign(config, passportOptions) + ); }); /**