mirror of
https://github.com/ansible/awx.git
synced 2026-03-09 13:39:27 -02:30
Analytics API: Permissions for System Auditor
This commit is contained in:
@@ -25,6 +25,7 @@ __all__ = [
|
|||||||
'UserPermission',
|
'UserPermission',
|
||||||
'IsSystemAdminOrAuditor',
|
'IsSystemAdminOrAuditor',
|
||||||
'WorkflowApprovalPermission',
|
'WorkflowApprovalPermission',
|
||||||
|
'AnalyticsPermission',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -250,3 +251,16 @@ class IsSystemAdminOrAuditor(permissions.BasePermission):
|
|||||||
class WebhookKeyPermission(permissions.BasePermission):
|
class WebhookKeyPermission(permissions.BasePermission):
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
return request.user.can_access(view.model, 'admin', obj, request.data)
|
return request.user.can_access(view.model, 'admin', obj, request.data)
|
||||||
|
|
||||||
|
|
||||||
|
class AnalyticsPermission(permissions.BasePermission):
|
||||||
|
"""
|
||||||
|
Allows GET/POST/OPTIONS to system admins and system auditors.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def has_permission(self, request, view):
|
||||||
|
if not (request.user and request.user.is_authenticated):
|
||||||
|
return False
|
||||||
|
if request.method in ["GET", "POST", "OPTIONS"]:
|
||||||
|
return request.user.is_superuser or request.user.is_system_auditor
|
||||||
|
return request.user.is_superuser
|
||||||
|
|||||||
@@ -7,10 +7,9 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
|
|
||||||
from awx.api.generics import APIView, Response
|
from awx.api.generics import APIView, Response
|
||||||
from awx.api.permissions import IsSystemAdminOrAuditor
|
from awx.api.permissions import AnalyticsPermission
|
||||||
from awx.api.versioning import reverse
|
from awx.api.versioning import reverse
|
||||||
from awx.main.utils import get_awx_version
|
from awx.main.utils import get_awx_version
|
||||||
from rest_framework.permissions import AllowAny
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -43,7 +42,7 @@ class GetNotAllowedMixin(object):
|
|||||||
|
|
||||||
|
|
||||||
class AnalyticsRootView(APIView):
|
class AnalyticsRootView(APIView):
|
||||||
permission_classes = (AllowAny,)
|
permission_classes = (AnalyticsPermission,)
|
||||||
name = _('Automation Analytics')
|
name = _('Automation Analytics')
|
||||||
swagger_topic = 'Automation Analytics'
|
swagger_topic = 'Automation Analytics'
|
||||||
|
|
||||||
@@ -99,7 +98,7 @@ class AnalyticsGenericView(APIView):
|
|||||||
return Response(response.json(), status=response.status_code)
|
return Response(response.json(), status=response.status_code)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
permission_classes = (IsSystemAdminOrAuditor,)
|
permission_classes = (AnalyticsPermission,)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _request_headers(request):
|
def _request_headers(request):
|
||||||
|
|||||||
Reference in New Issue
Block a user