diff options
author | Pami Ketolainen <pami.ketolainen@jollamobile.com> | 2013-12-24 00:13:41 +0200 |
---|---|---|
committer | Pami Ketolainen <pami.ketolainen@jollamobile.com> | 2014-03-19 09:11:42 +0200 |
commit | 6dbf7e81e3a8cda3dad2e189bda33f96f26fa3fe (patch) | |
tree | 0dd9ac155e60f91bb892f6a2ae23a078d4d8e6ce | |
parent | 0821a96efea80729aaa871fe4e0d3710fbea0a95 (diff) | |
download | askbot-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.py | 14 | ||||
-rw-r--r-- | askbot/deps/django_authopenid/views.py | 9 |
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 |