Как сделать в Django пользовательское промежуточное ПО для ограничения пользователей?
urls.py
path('panel/', include('panel.urls')),
path('', include('base.urls')),
- пользователю не суперадмину запрещен доступ к panel.urls
- пользователю суперадмин разрешен доступ к panel.urls
middllware.py
# panel/middleware.py
from django.shortcuts import redirect
from django.urls import reverse
class AdminRestrictMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path.startswith('/panel/'):
if request.user.is_authenticated:
if not request.user.is_superuser:
# If the user is not an admin, redirect them to a restricted page
return redirect(reverse('restricted_access'))
else:
# If the user is not logged in, redirect them to the login page
return redirect(reverse('login'))
response = self.get_response(request)
return response