Last active
January 16, 2017 19:17
-
-
Save saltukalakus/c426d4bc65a3b43e3ad4ef51063dd67a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function (user, context, callback) { | |
var userApiUrl = auth0.baseUrl + '/users'; | |
function isSocial() { | |
return user.identities[0].isSocial; | |
} | |
function deleteSocialUser(user) { | |
if (isSocial()){ | |
request({ | |
url: userApiUrl + '/' + user.user_id, | |
method: 'DELETE', | |
headers: { | |
Authorization: 'Bearer ' + configuration.AUTH0_API_TOKEN | |
} | |
}, function (err, response, body){ | |
if (err) { | |
return callback(new UnauthorizedError('Account does not exist.')); | |
} | |
return callback(null, user, context); | |
}); | |
} else { | |
callback(null, user, context); | |
} | |
} | |
var request = require('request@2.56.0'); | |
// Check if email is verified, we shouldn't automatically | |
// merge accounts if this is not the case. | |
if (!user.email_verified) { | |
return callback(null, user, context); | |
} | |
var newUserAryTmp = user.user_id.split('|'); | |
var newUserProvider = newUserAryTmp[0]; | |
var newUserUserId = newUserAryTmp[1]; | |
request({ | |
url: userApiUrl, | |
headers: { | |
Authorization: 'Bearer ' + auth0.accessToken | |
}, | |
qs: { | |
search_engine: 'v2', | |
q: 'email:"' + user.email + '" -user_id:"' + user.user_id + '"', | |
} | |
}, | |
function(err, response, body) { | |
if (err) return callback(err); | |
if (response.statusCode !== 200) return callback(new Error(body)); | |
var foundAuth0User = false; | |
var data = JSON.parse(body); | |
if (data.length > 0) { | |
async.each(data, function(targetUser, cb) { | |
if (targetUser.email_verified) { | |
var aryTmp = targetUser.user_id.split('|'); | |
var provider = aryTmp[0]; | |
if (provider === "auth0") { | |
foundAuth0User = true; | |
request.post({ | |
url: userApiUrl + '/' + targetUser.user_id + '/identities', | |
headers: { | |
Authorization: 'Bearer ' + auth0.accessToken | |
}, | |
json: { provider: newUserProvider, user_id: newUserUserId } | |
}, function(err, response, body) { | |
if (response.statusCode >= 400) { | |
return cb(new Error('Error linking account: ' + response.statusMessage)); | |
} | |
cb(err); | |
}); | |
} | |
} else { | |
cb(); | |
} | |
}, function(err) { | |
if(!foundAuth0User){ | |
deleteSocialUser(user); | |
} else { | |
callback(null, user, context); | |
} | |
}); | |
} else { | |
if(!foundAuth0User){ | |
deleteSocialUser(user); | |
} else { | |
callback(null, user, context); | |
} | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment