--- a/server/src/metaeducation/mtdc_oauth_provider/views.py Mon Jul 25 17:39:29 2016 +0200
+++ b/server/src/metaeducation/mtdc_oauth_provider/views.py Mon Jul 25 17:53:37 2016 +0200
@@ -33,12 +33,12 @@
class MtdcOAuth2Adapter(OAuth2Adapter, DefaultSocialAccountAdapter):
provider_id = MtdcProvider.id
supports_state = False
-
+
oauth_base_url = ""
access_token_url = ""
authorize_url = ""
profile_url = ""
-
+
def __init__(self, request=None):
if request:
logger.debug("AUTHORIZATION CODE AUTH: init adapter")
@@ -48,23 +48,24 @@
logger.debug("AUTHORIZATION CODE AUTH: context queryarg is %r", request.GET.get("context", None))
self.oauth_base_url = request.session.get("OAUTH_CONTEXT_BASE_URL", None)
logger.debug("AUTHORIZATION CODE AUTH: context is %r", self.oauth_base_url)
- self.access_token_url = self.oauth_base_url + settings.MTDC_ACCESS_TOKEN_URL
- self.authorize_url = self.oauth_base_url + settings.MTDC_AUTHORIZE_URL
- self.profile_url = self.oauth_base_url + settings.MTDC_PROFILE_URL
-
+ if self.oauth_base_url:
+ self.access_token_url = self.oauth_base_url + settings.MTDC_ACCESS_TOKEN_URL
+ self.authorize_url = self.oauth_base_url + settings.MTDC_AUTHORIZE_URL
+ self.profile_url = self.oauth_base_url + settings.MTDC_PROFILE_URL
+
def pre_social_login(self, request, sociallogin):
try:
logger.debug("AUTHORIZATION CODE AUTH: login almost complete, checking if user %r exists", sociallogin.account.extra_data.get('external_id', 'NO_ID'))
user = get_user_model().objects.get(external_id=sociallogin.account.extra_data.get('external_id', '')) # if user exists, connect the account to the existing account and login
logger.debug("AUTHORIZATION CODE AUTH: user %r exists, connecting to existing account", sociallogin.account.extra_data.get('external_id', 'NO_ID'))
- sociallogin.state['process'] = 'connect'
+ sociallogin.state['process'] = 'connect'
perform_login(request, user, 'none')
except get_user_model().DoesNotExist:
logger.debug("AUTHORIZATION CODE AUTH: user %r does not exist", sociallogin.account.extra_data.get('external_id', 'NO_ID'))
-
+
def get_login_redirect_url(self, request):
return super(MtdcOAuth2Adapter, self).get_login_redirect_url(self, request)
-
+
def new_user(self, request, sociallogin):
if 'external_id' in sociallogin.account.extra_data:
logger.debug("AUTHORIZATION CODE AUTH: checking if user %r exists to populate sociallogin", sociallogin.account.extra_data.get('external_id', 'NO_ID'))
@@ -79,7 +80,7 @@
else:
logger.debug("AUTHORIZATION CODE AUTH: no external_id in extra data")
return get_user_model()()
-
+
def populate_user(self,
request,
sociallogin,
@@ -92,13 +93,13 @@
user.last_name = sociallogin.account.extra_data.get('last_name', '')
user.save()
return user
-
+
def complete_login(self, request, app, token, **kwargs):
logger.debug("AUTHORIZATION CODE AUTH: complete_login: getting profile info")
resp = requests.get(self.profile_url,
params={'access_token': token.token})
extra_data = resp.json()
-
+
logger.debug("AUTHORIZATION CODE AUTH: response extra_data: %r ", extra_data)
return self.get_provider().sociallogin_from_response(request,
extra_data)
@@ -125,4 +126,4 @@
oauth2_login = MtdcOAuth2LoginView.adapter_view(MtdcOAuth2Adapter)
-oauth2_callback = MtdcOAuth2CallbackView.adapter_view(MtdcOAuth2Adapter)
\ No newline at end of file
+oauth2_callback = MtdcOAuth2CallbackView.adapter_view(MtdcOAuth2Adapter)