You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
916 B
27 lines
916 B
from django.contrib.auth.mixins import AccessMixin, LoginRequiredMixin
|
|
from guardian.mixins import PermissionRequiredMixin
|
|
|
|
|
|
class OnlySuperUserMixin(AccessMixin):
|
|
"""Verify that the current user is superuser."""
|
|
def dispatch(self, request, *args, **kwargs):
|
|
if not request.user.is_superuser:
|
|
return self.handle_no_permission()
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
class OnlyAdminsMixin(AccessMixin):
|
|
"""Verify that the current user is admin."""
|
|
def dispatch(self, request, *args, **kwargs):
|
|
if not request.user.is_admin:
|
|
return self.handle_no_permission()
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
class LoginAdminMixin(LoginRequiredMixin, OnlyAdminsMixin):
|
|
pass
|
|
|
|
|
|
class LoginAdminPermissionMixin(LoginRequiredMixin, OnlyAdminsMixin,
|
|
PermissionRequiredMixin):
|
|
return_403 = True
|