def permission_required_decorator_function(
permissions: str | Sequence[str],
method,
request: WSGIRequest,
*args,
all_required: bool = True,
**kwargs
):
if not request.user.is_authenticated:
return HttpResponseRedirect(reverse('django_spire:auth:admin:login'))
if isinstance(permissions, str):
perms = (permissions,)
else:
perms = permissions
if not all_required:
for perm in perms:
if request.user.has_perm(perm):
return method(request, *args, **kwargs)
if not request.user.has_perms(perms):
raise PermissionDenied
return method(request, *args, **kwargs)