39 lines
969 B
JavaScript
39 lines
969 B
JavaScript
const parseGoogleData = service => ({
|
|
email: service.email,
|
|
name: {
|
|
first: service.given_name,
|
|
last: service.family_name
|
|
},
|
|
lang: service.locale
|
|
});
|
|
|
|
const parseGithubData = (profile, service) => {
|
|
const name = profile.name.split(' ');
|
|
return {
|
|
email: service.email,
|
|
name: {
|
|
first: name[0],
|
|
last: name[1]
|
|
}
|
|
};
|
|
};
|
|
|
|
const parseFacebookData = service => ({
|
|
email: service.email,
|
|
name: {
|
|
first: service.first_name,
|
|
last: service.last_name
|
|
}
|
|
});
|
|
|
|
const getDataForService = (profile, services) => {
|
|
if (services.facebook) return parseFacebookData(services.facebook);
|
|
if (services.github) return parseGithubData(profile, services.github);
|
|
if (services.google) return parseGoogleData(services.google);
|
|
};
|
|
|
|
export default (options, user) => {
|
|
const isOAuth = !options.password;
|
|
const serviceData = isOAuth ? getDataForService(options.profile, user.services) : null;
|
|
return isOAuth ? serviceData : null;
|
|
};
|