From 72ab3085807fba28d402d2095701b88d2f5c24a5 Mon Sep 17 00:00:00 2001 From: Slava Bacherikov Date: Fri, 4 May 2012 00:20:22 +0300 Subject: [PATCH] Change get_scope method in BaseOAuth2 class. --- social_auth/backends/__init__.py | 10 +++++++++- social_auth/backends/contrib/github.py | 9 +++------ social_auth/backends/contrib/vkontakte.py | 6 ++---- social_auth/backends/facebook.py | 6 ++---- social_auth/backends/google.py | 7 +++---- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/social_auth/backends/__init__.py b/social_auth/backends/__init__.py index 0f71154..10c733d 100644 --- a/social_auth/backends/__init__.py +++ b/social_auth/backends/__init__.py @@ -662,6 +662,9 @@ class BaseOAuth2(BaseOAuth): ACCESS_TOKEN_URL = None SCOPE_SEPARATOR = ' ' RESPONSE_TYPE = 'code' + + SCOPE_VAR_NAME = None + DEFAULT_SCOPE = [] def auth_url(self): """Return redirect url""" @@ -719,7 +722,12 @@ class BaseOAuth2(BaseOAuth): def get_scope(self): """Return list with needed access scope""" - return [] + scope_var_name = getattr(self, 'SCOPE_VAR_NAME', None) + scope = getattr(self, 'DEFAULT_SCOPE', []) + # scope_var_name should not be empty string + if scope_var_name: + scope = scope + setting(scope_var_name, []) + return scope # Backend loading was previously performed via the diff --git a/social_auth/backends/contrib/github.py b/social_auth/backends/contrib/github.py index 8ccb2d1..6006279 100644 --- a/social_auth/backends/contrib/github.py +++ b/social_auth/backends/contrib/github.py @@ -51,12 +51,9 @@ class GithubAuth(BaseOAuth2): SETTINGS_KEY_NAME = 'GITHUB_APP_ID' SETTINGS_SECRET_NAME = 'GITHUB_API_SECRET' SCOPE_SEPARATOR = ',' - - def get_scope(self): - """Return list with needed access scope""" - # Look at http://developer.github.com/v3/oauth/ - return setting('GITHUB_EXTENDED_PERMISSIONS', []) - + # Look at http://developer.github.com/v3/oauth/ + SCOPE_VAR_NAME = 'GITHUB_EXTENDED_PERMISSIONS' + def user_data(self, access_token, *args, **kwargs): """Loads user data from service""" url = GITHUB_USER_DATA_URL + '?' + urlencode({ diff --git a/social_auth/backends/contrib/vkontakte.py b/social_auth/backends/contrib/vkontakte.py index 62dfd2a..90fdc63 100644 --- a/social_auth/backends/contrib/vkontakte.py +++ b/social_auth/backends/contrib/vkontakte.py @@ -47,6 +47,8 @@ class VkontakteAuth(BaseOAuth2): AUTH_BACKEND = VkontakteBackend SETTINGS_KEY_NAME = 'VK_APP_ID' SETTINGS_SECRET_NAME = 'VK_API_SECRET' + # Look at http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9 + SCOPE_VAR_NAME = 'VK_EXTRA_SCOPE' def user_data(self, access_token, response, *args, **kwargs): """Loads user data from service""" @@ -62,10 +64,6 @@ class VkontakteAuth(BaseOAuth2): except (ValueError, IndexError): return None - def get_scope(self): - """Return list with needed access scope""" - # Look at http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9 - return setting('VK_EXTRA_SCOPE', []) # Backend definition diff --git a/social_auth/backends/facebook.py b/social_auth/backends/facebook.py index b1fbbbc..fa0befd 100644 --- a/social_auth/backends/facebook.py +++ b/social_auth/backends/facebook.py @@ -56,10 +56,8 @@ class FacebookAuth(BaseOAuth2): AUTHORIZATION_URL = 'https://www.facebook.com/dialog/oauth' SETTINGS_KEY_NAME = 'FACEBOOK_APP_ID' SETTINGS_SECRET_NAME = 'FACEBOOK_API_SECRET' - - def get_scope(self): - return setting('FACEBOOK_EXTENDED_PERMISSIONS', []) - + SCOPE_VAR_NAME = 'FACEBOOK_EXTENDED_PERMISSIONS' + def user_data(self, access_token, *args, **kwargs): """Loads user data from service""" data = None diff --git a/social_auth/backends/google.py b/social_auth/backends/google.py index e7d76ab..6198bc2 100644 --- a/social_auth/backends/google.py +++ b/social_auth/backends/google.py @@ -184,10 +184,9 @@ class GoogleOAuth2(BaseOAuth2): ACCESS_TOKEN_URL = 'https://accounts.google.com/o/oauth2/token' SETTINGS_KEY_NAME = _OAUTH2_KEY_NAME SETTINGS_SECRET_NAME = 'GOOGLE_OAUTH2_CLIENT_SECRET' - - def get_scope(self): - return GOOGLE_OAUTH2_SCOPE + setting('GOOGLE_OAUTH_EXTRA_SCOPE', []) - + SCOPE_VAR_NAME = 'GOOGLE_OAUTH_EXTRA_SCOPE' + DEFAULT_SCOPE = GOOGLE_OAUTH2_SCOPE + def user_data(self, access_token, *args, **kwargs): """Return user data from Google API""" return googleapis_profile(GOOGLEAPIS_PROFILE, access_token) -- 2.39.5