mirror of
https://github.com/ansible/awx.git
synced 2026-03-05 18:51:06 -03:30
Merge pull request #5362 from ryanpetrello/fix-5324
properly detect the backend name in failed social_auth callbacks
This commit is contained in:
@@ -23,6 +23,10 @@ from awx.main.models import AuthToken
|
|||||||
|
|
||||||
class SocialAuthMiddleware(SocialAuthExceptionMiddleware):
|
class SocialAuthMiddleware(SocialAuthExceptionMiddleware):
|
||||||
|
|
||||||
|
def process_view(self, request, callback, callback_args, callback_kwargs):
|
||||||
|
if request.path.startswith('/sso/login/'):
|
||||||
|
request.session['social_auth_last_backend'] = callback_kwargs['backend']
|
||||||
|
|
||||||
def process_request(self, request):
|
def process_request(self, request):
|
||||||
token_key = request.COOKIES.get('token', '')
|
token_key = request.COOKIES.get('token', '')
|
||||||
token_key = urllib.quote(urllib.unquote(token_key).strip('"'))
|
token_key = urllib.quote(urllib.unquote(token_key).strip('"'))
|
||||||
@@ -57,6 +61,7 @@ class SocialAuthMiddleware(SocialAuthExceptionMiddleware):
|
|||||||
|
|
||||||
if auth_token and request.user and request.user.is_authenticated():
|
if auth_token and request.user and request.user.is_authenticated():
|
||||||
request.session.pop('social_auth_error', None)
|
request.session.pop('social_auth_error', None)
|
||||||
|
request.session.pop('social_auth_last_backend', None)
|
||||||
|
|
||||||
def process_exception(self, request, exception):
|
def process_exception(self, request, exception):
|
||||||
strategy = getattr(request, 'social_strategy', None)
|
strategy = getattr(request, 'social_strategy', None)
|
||||||
@@ -66,6 +71,12 @@ class SocialAuthMiddleware(SocialAuthExceptionMiddleware):
|
|||||||
if isinstance(exception, SocialAuthBaseException) or request.path.startswith('/sso/'):
|
if isinstance(exception, SocialAuthBaseException) or request.path.startswith('/sso/'):
|
||||||
backend = getattr(request, 'backend', None)
|
backend = getattr(request, 'backend', None)
|
||||||
backend_name = getattr(backend, 'name', 'unknown-backend')
|
backend_name = getattr(backend, 'name', 'unknown-backend')
|
||||||
|
|
||||||
|
message = self.get_message(request, exception)
|
||||||
|
if request.session.get('social_auth_last_backend') != backend_name:
|
||||||
|
backend_name = request.session.get('social_auth_last_backend')
|
||||||
|
message = request.GET.get('error_description', message)
|
||||||
|
|
||||||
full_backend_name = backend_name
|
full_backend_name = backend_name
|
||||||
try:
|
try:
|
||||||
idp_name = strategy.request_data()['RelayState']
|
idp_name = strategy.request_data()['RelayState']
|
||||||
@@ -73,7 +84,6 @@ class SocialAuthMiddleware(SocialAuthExceptionMiddleware):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
message = self.get_message(request, exception)
|
|
||||||
social_logger.error(message)
|
social_logger.error(message)
|
||||||
|
|
||||||
url = self.get_redirect_uri(request, exception)
|
url = self.get_redirect_uri(request, exception)
|
||||||
|
|||||||
Reference in New Issue
Block a user