diff --git a/server/datasources.json b/server/datasources.json index 4ce65a253f..006eaaf8b5 100644 --- a/server/datasources.json +++ b/server/datasources.json @@ -1,9 +1,6 @@ { "db": { "name": "db", - "connector": "mongodb", - "host": "127.0.0.1", - "database": "foobar", - "port": 27017 + "connector": "mongodb" } } diff --git a/server/datasources.development.js b/server/datasources.local.js similarity index 100% rename from server/datasources.development.js rename to server/datasources.local.js diff --git a/server/server.js b/server/server.js index 3f1d8b6983..5aa78986a5 100755 --- a/server/server.js +++ b/server/server.js @@ -34,6 +34,8 @@ var R = require('ramda'), */ secrets = require('./../config/secrets'); +var generateKey = + require('loopback-component-passport/models/utils').generateKey; /** * Create Express server. */ @@ -199,10 +201,30 @@ passportConfigurator.setupModels({ userCredentialModel: app.models.userCredential }); +var passportOptions = { + profileToUser: function(provider, profile) { + var emails = profile.emails; + // NOTE(berks): get email or set to null. + // MongoDB indexs email but can be sparse(blank) + var email = emails && emails[0] && emails[0].value ? + emails[0].value : + null; + + var username = provider + '.' + (profile.username || profile.id); + var password = generateKey('password'); + var userObj = { + username: username, + password: password, + email: email + }; + return userObj; + } +}; + R.keys(passportProviders).map(function(strategy) { var config = passportProviders[strategy]; config.session = config.session !== false; - passportConfigurator.configureProvider(strategy, config); + passportConfigurator.configureProvider(strategy, config, passportOptions); }); /**