From c8ed8f4296e9022264c5e207434d1af810511ff4 Mon Sep 17 00:00:00 2001 From: jordan Date: Sat, 2 Jul 2011 17:06:15 +0000 Subject: [PATCH] OSQA-684, improved logic during Facebook oauth2 authentication when dealing with really long usernames (>30 characters). This modification was needed because of the limit imposed by the Django User Model. If the full name is >30 chars long we get only the first name or the last. Now we also require Facebook email permissions when authenticating. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1096 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum_modules/facebookauth/authentication.py | 19 ++++++++++++++++++- .../facebookauth/templates/button.html | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/forum_modules/facebookauth/authentication.py b/forum_modules/facebookauth/authentication.py index 308c18c..cc34fb5 100644 --- a/forum_modules/facebookauth/authentication.py +++ b/forum_modules/facebookauth/authentication.py @@ -47,9 +47,26 @@ class FacebookAuthConsumer(AuthenticationConsumer): # Communicate with the access token to the Facebook oauth interface. json = load_json(urlopen('https://graph.facebook.com/me?access_token=%s' % parsed_fbs['access_token'][0])) + first_name = smart_unicode(json['first_name']) + last_name = smart_unicode(json['last_name']) + full_name = '%s %s' % (first_name, last_name) + + # There is a limit in the Django user model for the username length (no more than 30 characaters) + if len(full_name) <= 30: + username = full_name + # If the full name is too long use only the first + elif len(first_name) <= 30: + username = first_name + # If it's also that long -- only the last + elif len(last_name) <= 30: + username = last_name + # If the real name of the user is indeed that weird, let him choose something on his own =) + else: + username = '' + # Return the user data. return { - 'username': '%s %s' % (smart_unicode(json['first_name']), smart_unicode(json['last_name'])), + 'username': username, 'email': smart_unicode(json['email']), } diff --git a/forum_modules/facebookauth/templates/button.html b/forum_modules/facebookauth/templates/button.html index ba03a30..db61aa2 100644 --- a/forum_modules/facebookauth/templates/button.html +++ b/forum_modules/facebookauth/templates/button.html @@ -20,7 +20,7 @@ } else { // user cancelled login } - }); + }, {perms:'email'}); } }); } -- 2.45.1