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:
parent
3288f26c19
commit
3b7d01c7b6
|
@ -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)
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue