From 3ef7e588a614c54b812e96bf0dbdf40ddbec2c37 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Fri, 19 Nov 2010 17:47:17 -0200 Subject: [PATCH] Store OAuth access token by default --- README.rst | 4 ++++ social_auth/backends.py | 4 ++++ social_auth/base.py | 13 +++++++++++-- social_auth/models.py | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index aed6993..9dbbea3 100644 --- a/README.rst +++ b/README.rst @@ -86,6 +86,10 @@ or:: final user name will have an integer suffix in case it's already taken. +- OAuth authentication will store access_token by default, set this value to False to avoid such behavior:: + + SOCIAL_AUTH_EXTRA_DATA = False + ------ OpenId diff --git a/social_auth/backends.py b/social_auth/backends.py index 2709c44..dcf3571 100644 --- a/social_auth/backends.py +++ b/social_auth/backends.py @@ -13,6 +13,10 @@ class OAuthBackend(SocialAuthBackend): "OAuth providers return an unique user id in response""" return response['id'] + def extra_data(self, user, uid, response, details): + """Return access_token to store in extra_data field""" + return response.get('access_token', '') + class TwitterBackend(OAuthBackend): """Twitter OAuth authentication backend""" diff --git a/social_auth/base.py b/social_auth/base.py index 48204aa..70495f8 100644 --- a/social_auth/base.py +++ b/social_auth/base.py @@ -111,13 +111,22 @@ class SocialAuthBackend(ModelBackend): .get(provider=self.name, uid=uid) except UserSocialAuth.DoesNotExist: + if getattr(settings, 'SOCIAL_AUTH_EXTRA_DATA', True): + extra_data = self.extra_data(user, uid, response, details) + else: + extra_data = '' user_oauth = UserSocialAuth.objects.create(user=user, uid=uid, - provider=self.name) + provider=self.name, + extra_data=extra_data) else: if user_oauth.user != user: - raise ValueError, 'The identity has already been claimed' + raise ValueError, 'Identity already claimed' return user_oauth + def extra_data(self, user, uid, response, details): + """Return default blank user extra data""" + return '' + def update_user_details(self, user, details): """Update user details with new (maybe) data""" first_name = details.get('firstname') or user.first_name diff --git a/social_auth/models.py b/social_auth/models.py index cf71f72..63cd12b 100644 --- a/social_auth/models.py +++ b/social_auth/models.py @@ -8,6 +8,7 @@ class UserSocialAuth(models.Model): user = models.ForeignKey(User, related_name='social_auth') provider = models.CharField(max_length=32) uid = models.TextField() + extra_data = models.TextField(default='', blank=True) class Meta: """Meta data""" -- 2.39.5