From 222d841e4ff756cbd23574ace0f22140a093703c Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Thu, 6 Aug 2015 00:19:03 -0700 Subject: [PATCH] on oauth signin only set profile/username if using github --- server/server.js | 55 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/server/server.js b/server/server.js index 93b0a1a3220..8a75517964d 100755 --- a/server/server.js +++ b/server/server.js @@ -2,12 +2,13 @@ require('dotenv').load(); var pmx = require('pmx'); pmx.init(); -var assign = require('lodash').assign, - loopback = require('loopback'), - boot = require('loopback-boot'), - expressState = require('express-state'), - path = require('path'), - passportProviders = require('./passport-providers'); +var uuid = require('node-uuid'), + assign = require('lodash').assign, + loopback = require('loopback'), + boot = require('loopback-boot'), + expressState = require('express-state'), + path = require('path'), + passportProviders = require('./passport-providers'); var generateKey = require('loopback-component-passport/lib/models/utils').generateKey; @@ -43,6 +44,39 @@ passportConfigurator.setupModels({ 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 = { emailOptional: true, profileToUser: function(provider, profile) { @@ -53,9 +87,9 @@ var passportOptions = { emails[0].value : null; - var username = (profile.username || profile.id); - username = typeof username === 'string' ? username.toLowerCase() : - username; + // create random username + // username will be assigned when camper signups for Github + var username = 'fcc' + uuid.v4().slice(0, 8); var password = generateKey('password'); var userObj = { username: username, @@ -65,8 +99,9 @@ var passportOptions = { if (email) { userObj.email = email; } + if (provider === 'github-login') { - userObj.isGithubCool = true; + setProfileFromGithub(userObj, profile, profile._json); } return userObj; }