aboutsummaryrefslogtreecommitdiff
path: root/node_modules/passport-google-oauth20/lib/profile/openid.js
blob: 2056feb5726b40a164a577b9893d6bebc7ca158f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
 * Parse profile.
 *
 * Parses user profiles as fetched from Google's OpenID Connect-compatible user
 * info endpoint.
 *
 * The amount of detail in the profile varies based on the scopes granted by the
 * user.  The following scope values add additional data:
 *
 *     `profile` - basic profile information
 *     `email` - email address
 *
 * References:
 *   - https://developers.google.com/identity/protocols/OpenIDConnect
 *
 * @param {object|string} json
 * @return {object}
 * @access public
 */
exports.parse = function(json) {
  if ('string' == typeof json) {
    json = JSON.parse(json);
  }
  
  var profile = {};
  profile.id = json.sub;
  profile.displayName = json.name;
  if (json.family_name || json.given_name) {
    profile.name = { familyName: json.family_name,
                     givenName: json.given_name };
  }
  if (json.email) {
    profile.emails = [ { value: json.email, verified: json.email_verified } ];
  }
  if (json.picture) {
    profile.photos = [{ value: json.picture }];
  }
  
  return profile;
};