Initial commit
This commit is contained in:
49
env/lib/python3.10/site-packages/wagtail/admin/views/generic/permissions.py
vendored
Normal file
49
env/lib/python3.10/site-packages/wagtail/admin/views/generic/permissions.py
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
|
||||
class PermissionCheckedMixin:
|
||||
"""
|
||||
Mixin for class-based views to enforce permission checks according to
|
||||
a permission policy (see wagtail.permission_policies).
|
||||
|
||||
To take advantage of this, subclasses should set the class property:
|
||||
* permission_policy (a policy object)
|
||||
and either of:
|
||||
* permission_required (an action name such as 'add', 'change' or 'delete')
|
||||
* any_permission_required (a list of action names - the user must have
|
||||
one or more of those permissions)
|
||||
"""
|
||||
|
||||
permission_policy = None
|
||||
permission_required = None
|
||||
any_permission_required = None
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if self.permission_required is not None:
|
||||
if not self.user_has_permission(self.permission_required):
|
||||
raise PermissionDenied
|
||||
|
||||
if self.any_permission_required is not None:
|
||||
if not self.user_has_any_permission(self.any_permission_required):
|
||||
raise PermissionDenied
|
||||
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def user_has_permission(self, permission):
|
||||
return not self.permission_policy or (
|
||||
self.permission_policy.user_has_permission(self.request.user, permission)
|
||||
)
|
||||
|
||||
def user_has_permission_for_instance(self, permission, instance):
|
||||
return not self.permission_policy or (
|
||||
self.permission_policy.user_has_permission_for_instance(
|
||||
self.request.user, permission, instance
|
||||
)
|
||||
)
|
||||
|
||||
def user_has_any_permission(self, permissions):
|
||||
return not self.permission_policy or (
|
||||
self.permission_policy.user_has_any_permission(
|
||||
self.request.user, permissions
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user