freeCodeCamp/server/utils/auth.js

63 lines
1.2 KiB
JavaScript

const providerHash = {
facebook: ({ id }) => id,
twitter: ({ username }) => username,
linkedin({ _json }) {
return _json && _json.publicProfileUrl || null;
},
google: ({ id }) => id
};
export function getUsernameFromProvider(provider, profile) {
return typeof providerHash[provider] === 'function' ?
providerHash[provider](profile) :
null;
}
// using es6 argument destructing
export function setProfileFromGithub(
user,
{
profileUrl: githubURL,
username
},
{
id: githubId,
avatar_url: picture,
email: githubEmail,
created_at: joinedGithubOn,
blog: website,
location,
bio,
name
}
) {
return Object.assign(
user,
{
name,
email: user.email || githubEmail,
username: username.toLowerCase(),
location,
bio,
joinedGithubOn,
website,
isGithubCool: true,
picture,
githubId,
githubURL,
githubEmail,
githubProfile: githubURL
}
);
}
export function getFirstImageFromProfile(profile) {
return profile && profile.photos && profile.photos[0] ?
profile.photos[0].value :
null;
}
export function getSocialProvider(provider) {
return provider.split('-')[0];
}