Skip to content

Commit df79589

Browse files
Merge pull request #406 from melanger/patch-2
fix: name is optional in ORCID backend
2 parents 5395e49 + 6219d21 commit df79589

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/satosa/backends/orcid.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def _authn_response(self, context):
7373
request_args=rargs, state=aresp['state'])
7474

7575
user_info = self.user_information(
76-
atresp['access_token'], atresp['orcid'], atresp['name'])
76+
atresp['access_token'], atresp['orcid'], atresp.get('name'))
7777
internal_response = InternalData(
7878
auth_info=self.auth_info(context.request))
7979
internal_response.attributes = self.converter.to_internal(
@@ -82,7 +82,7 @@ def _authn_response(self, context):
8282
del context.state[self.name]
8383
return self.auth_callback_func(context, internal_response)
8484

85-
def user_information(self, access_token, orcid, name):
85+
def user_information(self, access_token, orcid, name=None):
8686
base_url = self.config['server_info']['user_info']
8787
url = urljoin(base_url, '{}/person'.format(orcid))
8888
headers = {
@@ -92,13 +92,15 @@ def user_information(self, access_token, orcid, name):
9292
r = requests.get(url, headers=headers)
9393
r = r.json()
9494
emails, addresses = r['emails']['email'], r['addresses']['address']
95+
rname = r.get('name') or {}
9596
ret = dict(
9697
address=', '.join([e['country']['value'] for e in addresses]),
9798
displayname=name,
9899
edupersontargetedid=orcid, orcid=orcid,
99100
mail=' '.join([e['email'] for e in emails]),
100101
name=name,
101-
givenname=r['name']['given-names']['value'],
102-
surname=(r['name']['family-name'] or {}).get('value'),
102+
givenname=(rname.get('given-names') or {}).get('value'),
103+
surname=(rname.get('family-name') or {}).get('value'),
103104
)
105+
104106
return ret

0 commit comments

Comments
 (0)