From dafd6acf1a2f49f771d1d4ee4fb76cf486363819 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Wed, 13 Sep 2017 23:00:41 -0400 Subject: [PATCH] Merge pull request #161 from wwitzel3/devel update social auth strategy to have fixes from social-app-django --- awx/settings/defaults.py | 2 +- awx/sso/strategies/__init__.py | 2 ++ awx/sso/strategies/django_strategy.py | 30 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 awx/sso/strategies/__init__.py create mode 100644 awx/sso/strategies/django_strategy.py diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 514b6ac731..023cbd8d07 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -497,7 +497,7 @@ else: } # Social Auth configuration. -SOCIAL_AUTH_STRATEGY = 'social.strategies.django_strategy.DjangoStrategy' +SOCIAL_AUTH_STRATEGY = 'awx.sso.strategies.django_strategy.AWXDjangoStrategy' SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage' SOCIAL_AUTH_USER_MODEL = AUTH_USER_MODEL # noqa SOCIAL_AUTH_PIPELINE = ( diff --git a/awx/sso/strategies/__init__.py b/awx/sso/strategies/__init__.py new file mode 100644 index 0000000000..46176c348f --- /dev/null +++ b/awx/sso/strategies/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) 2017 Ansible, Inc. +# All Rights Reserved. diff --git a/awx/sso/strategies/django_strategy.py b/awx/sso/strategies/django_strategy.py new file mode 100644 index 0000000000..728e380dc4 --- /dev/null +++ b/awx/sso/strategies/django_strategy.py @@ -0,0 +1,30 @@ +# Copyright (c) 2017 Ansible, Inc. +# All Rights Reserved. + +from social.strategies.django_strategy import DjangoStrategy + + +class AWXDjangoStrategy(DjangoStrategy): + """A DjangoStrategy for python-social-auth containing + fixes and updates from social-app-django + + TODO: Revert back to using the default DjangoStrategy after + we upgrade to social-core / social-app-django. We will also + want to ensure we update the SOCIAL_AUTH_STRATEGY setting. + """ + + def __init__(self, storage, request=None, tpl=None): + super(AWXDjangoStrategy, self).__init__(storage, tpl) + + def request_port(self): + """Port in use for this request + https://github.com/python-social-auth/social-app-django/blob/master/social_django/strategy.py#L76 + """ + try: # django >= 1.9 + return self.request.get_port() + except AttributeError: # django < 1.9 + host_parts = self.request.get_host().split(':') + try: + return host_parts[1] + except IndexError: + return self.request.META['SERVER_PORT']