Я собираюсь написать модель, которая содержит следующий пример поля. user_id
, role_id
, company_id
, functionality_id
, has_access
. Я хочу написать промежуточное программное обеспечение, где пользователь будет raised NOT ACCESS
, где поле has_access
равно false
. Пожалуйста, помогите, как мне это сделать, и я не могу использовать встроенное разрешение из-за моих зависимостей. Я создал middleware.py
и следовал официальному документу. Это только начало написания промежуточного программного обеспечения
class ACLMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
Я нашел ссылку на этот код, но я не знаю, правильный ли это способ, потому что я использую версию django 2.1
from django.core.urlresolvers import reverse
from django.http import Http404
class RestrictStaffToAdminMiddleware(object):
"""
A middleware that restricts staff members access to administration panels.
"""
def process_request(self, request):
if request.path.startswith(reverse('admin:index')):
if request.user.is_authenticated():
if not request.user.is_staff:
raise Http404
else:
raise Http404