on oauth signin only set profile/username if using github
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user