on oauth signin only set profile/username if using github

This commit is contained in:
Berkeley Martinez
2015-08-06 00:19:03 -07:00
parent ce9e2ebcae
commit 222d841e4f

View File

@ -2,12 +2,13 @@ require('dotenv').load();
var pmx = require('pmx'); var pmx = require('pmx');
pmx.init(); pmx.init();
var assign = require('lodash').assign, var uuid = require('node-uuid'),
loopback = require('loopback'), assign = require('lodash').assign,
boot = require('loopback-boot'), loopback = require('loopback'),
expressState = require('express-state'), boot = require('loopback-boot'),
path = require('path'), expressState = require('express-state'),
passportProviders = require('./passport-providers'); path = require('path'),
passportProviders = require('./passport-providers');
var generateKey = var generateKey =
require('loopback-component-passport/lib/models/utils').generateKey; require('loopback-component-passport/lib/models/utils').generateKey;
@ -43,6 +44,39 @@ passportConfigurator.setupModels({
userCredentialModel: app.models.userCredential userCredentialModel: app.models.userCredential
}); });
// using es6 argument destructing
function setProfileFromGithub(
user,
{
profileUrl: githubURL,
username
},
{
location,
email: githubEmail,
id: githubId,
'created_at': joinedGithubOn,
blog: website,
name
}
) {
return assign(
user,
{ isGithubCool: true, isMigrationGrandfathered: false },
{
name,
username: username.toLowerCase(),
location,
joinedGithubOn,
website,
githubId,
githubURL,
githubEmail,
githubProfile: githubURL
}
);
}
var passportOptions = { var passportOptions = {
emailOptional: true, emailOptional: true,
profileToUser: function(provider, profile) { profileToUser: function(provider, profile) {
@ -53,9 +87,9 @@ var passportOptions = {
emails[0].value : emails[0].value :
null; null;
var username = (profile.username || profile.id); // create random username
username = typeof username === 'string' ? username.toLowerCase() : // username will be assigned when camper signups for Github
username; var username = 'fcc' + uuid.v4().slice(0, 8);
var password = generateKey('password'); var password = generateKey('password');
var userObj = { var userObj = {
username: username, username: username,
@ -65,8 +99,9 @@ var passportOptions = {
if (email) { if (email) {
userObj.email = email; userObj.email = email;
} }
if (provider === 'github-login') { if (provider === 'github-login') {
userObj.isGithubCool = true; setProfileFromGithub(userObj, profile, profile._json);
} }
return userObj; return userObj;
} }