summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPami Ketolainen <pami.ketolainen@jollamobile.com>2013-12-24 00:13:41 +0200
committerPami Ketolainen <pami.ketolainen@jollamobile.com>2014-03-19 09:11:42 +0200
commit6dbf7e81e3a8cda3dad2e189bda33f96f26fa3fe (patch)
tree0dd9ac155e60f91bb892f6a2ae23a078d4d8e6ce
parent0821a96efea80729aaa871fe4e0d3710fbea0a95 (diff)
downloadaskbot-6dbf7e81e3a8cda3dad2e189bda33f96f26fa3fe.tar.gz
askbot-6dbf7e81e3a8cda3dad2e189bda33f96f26fa3fe.tar.bz2
askbot-6dbf7e81e3a8cda3dad2e189bda33f96f26fa3fe.zip
Add OAuth2.0 support in custom provider
-rw-r--r--askbot/deps/django_authopenid/util.py14
-rw-r--r--askbot/deps/django_authopenid/views.py9
2 files changed, 17 insertions, 6 deletions
diff --git a/askbot/deps/django_authopenid/util.py b/askbot/deps/django_authopenid/util.py
index 06379e1d..75cd3fb5 100644
--- a/askbot/deps/django_authopenid/util.py
+++ b/askbot/deps/django_authopenid/util.py
@@ -37,7 +37,7 @@ from models import Association, Nonce
__all__ = ['OpenID', 'DjangoOpenIDStore', 'from_openid_response', 'clean_next']
-ALLOWED_LOGIN_TYPES = ('password', 'oauth', 'openid-direct', 'openid-username', 'wordpress')
+ALLOWED_LOGIN_TYPES = ('password', 'oauth', 'oauth2', 'openid-direct', 'openid-username', 'wordpress')
class OpenID:
def __init__(self, openid_, issued, attrs=None, sreg_=None):
@@ -273,6 +273,15 @@ class LoginMethod(object):
self.oauth_authorize_url = self.get_required_attr('OAUTH_AUTHORIZE_URL', for_what)
self.oauth_get_user_id_function = self.get_required_attr('oauth_get_user_id_function', for_what)
+ if self.login_type == 'oauth2':
+ for_what = 'custom OAuth2 login'
+ self.auth_endpoint = self.get_required_attr('OAUTH_ENDPOINT', for_what)
+ self.token_endpoint = self.get_required_attr('OAUTH_TOKEN_ENDPOINT', for_what)
+ self.resource_endpoint = self.get_required_attr('OAUTH_RESOURCE_ENDPOINT', for_what)
+ self.oauth_get_user_id_function = self.get_required_attr('oauth_get_user_id_function', for_what)
+ self.response_parser = getattr(self.mod, 'response_parser', None)
+ self.token_transport = getattr(self.mod, 'token_transport', None)
+
if self.login_type.startswith('openid'):
self.openid_endpoint = self.get_required_attr('OPENID_ENDPOINT', 'custom OpenID login')
if self.login_type == 'openid-username':
@@ -294,7 +303,8 @@ class LoginMethod(object):
'change_password_prompt', 'consumer_key', 'consumer_secret',
'request_token_url', 'access_token_url', 'authorize_url',
'get_user_id_function', 'openid_endpoint', 'tooltip_text',
- 'check_password',
+ 'check_password', 'auth_endpoint', 'token_endpoint',
+ 'resource_endpoint', 'response_parser', 'token_transport'
)
#some parameters in the class have different names from those
#in the dictionary
diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py
index 67df0bd0..04b5deca 100644
--- a/askbot/deps/django_authopenid/views.py
+++ b/askbot/deps/django_authopenid/views.py
@@ -294,12 +294,12 @@ def complete_oauth2_signin(request):
client_id = getattr(
askbot_settings,
- provider_name.upper() + '_KEY'
+ provider_name.upper() + '_KEY',
)
client_secret = getattr(
askbot_settings,
- provider_name.upper() + '_SECRET'
+ provider_name.upper() + '_SECRET',
)
client = OAuth2Client(
@@ -307,12 +307,13 @@ def complete_oauth2_signin(request):
resource_endpoint=params['resource_endpoint'],
redirect_uri=site_url(reverse('user_complete_oauth2_signin')),
client_id=client_id,
- client_secret=client_secret
+ client_secret=client_secret,
+ token_transport=params.get('token_transport', None)
)
client.request_token(
code=request.GET['code'],
- parser=params['response_parser']
+ parser=params.get('response_parser', None)
)
#todo: possibly set additional parameters here