diff --git a/awx/api/generics.py b/awx/api/generics.py index fcc48322ce..869c29277a 100644 --- a/awx/api/generics.py +++ b/awx/api/generics.py @@ -21,7 +21,7 @@ from django.utils.translation import ugettext_lazy as _ # Django REST Framework from rest_framework.authentication import get_authorization_header -from rest_framework.exceptions import PermissionDenied +from rest_framework.exceptions import PermissionDenied, AuthenticationFailed from rest_framework import generics from rest_framework.response import Response from rest_framework import status @@ -115,6 +115,10 @@ class APIView(views.APIView): drf_request = super(APIView, self).initialize_request(request, *args, **kwargs) request.drf_request = drf_request + try: + request.drf_request_user = getattr(drf_request, 'user', False) + except AuthenticationFailed: + request.drf_request_user = None return drf_request def finalize_response(self, request, response, *args, **kwargs): diff --git a/awx/main/signals.py b/awx/main/signals.py index aa5266d31a..bc885b2c7f 100644 --- a/awx/main/signals.py +++ b/awx/main/signals.py @@ -558,8 +558,8 @@ def get_current_user_from_drf_request(sender, **kwargs): drf_request on the underlying Django Request object. ''' request = get_current_request() - drf_request = getattr(request, 'drf_request', None) - return (getattr(drf_request, 'user', False), 0) + drf_request_user = getattr(request, 'drf_request_user', False) + return (drf_request_user, 0) @receiver(pre_delete, sender=Organization)