Fixed name resolution in OAuth token

Some users don't actually have a fullName in launchpad. Others only have
a single word. Some have many words. This adds a bit of handling to make
those names behave nicely, though ultimately I think we should get rid of
first_name and last_name and just use full_name.

Change-Id: I64dceaaa87781f928b3a4fbf3a15de4f74f994e0
This commit is contained in:
Michael Krotscheck 2014-03-06 13:11:59 -08:00
parent 3288f26c19
commit 3b7d01c7b6
2 changed files with 14 additions and 3 deletions

View File

@ -101,9 +101,18 @@ class SkeletonValidator(RequestValidator):
openid = request._params["openid.claimed_id"]
email = request._params["openid.sreg.email"]
fullname = request._params["openid.sreg.fullname"]
username = request._params["openid.sreg.nickname"]
first_name = fullname.split()[0]
last_name = fullname.split()[1]
name_split = fullname.split()
if len(name_split) > 0:
first_name = name_split.pop(0)
else:
first_name = fullname
if len(name_split) > 0:
last_name = " ".join(name_split)
else:
last_name = ""
user = db_api.user_get_by_openid(openid)
@ -111,10 +120,12 @@ class SkeletonValidator(RequestValidator):
user = db_api.user_create({"openid": openid,
"first_name": first_name,
"last_name": last_name,
"username": username,
"email": email})
else:
user = db_api.user_update(user.id, {"first_name": first_name,
"last_name": last_name,
"username": username,
"email": email})
self.token_storage.save_authorization_code(code, user_id=user.id)

View File

@ -66,7 +66,7 @@ class OpenIdClient(object):
"openid.return_to": return_to_url,
"openid.ns.sreg": "http://openid.net/sreg/1.0",
"openid.sreg.required": "fullname,email",
"openid.sreg.required": "fullname,email,nickname",
"openid.ns.ext2": "http://openid.net/srv/ax/1.0",
"openid.ext2.mode": "fetch_request",