django-rest-framework/rest_framework/middleware.py

27 lines
1.1 KiB
Python

from django.core.exceptions import ImproperlyConfigured
from rest_framework.settings import api_settings
from rest_framework.views import APIView
try:
from django.contrib.auth.middleware import \
LoginRequiredMiddleware as DjangoLoginRequiredMiddleware
except ImportError:
DjangoLoginRequiredMiddleware = None
if DjangoLoginRequiredMiddleware:
class LoginRequiredMiddleware(DjangoLoginRequiredMiddleware):
def process_view(self, request, view_func, view_args, view_kwargs):
if (
hasattr(view_func, "cls")
and issubclass(view_func.cls, APIView)
):
if 'rest_framework.permissions.AllowAny' in api_settings.DEFAULT_PERMISSION_CLASSES:
raise ImproperlyConfigured(
"You cannot use 'rest_framework.permissions.AllowAny' in `DEFAULT_PERMISSION_CLASSES` "
"with `LoginRequiredMiddleware`."
)
return None
return super().process_view(request, view_func, view_args, view_kwargs)