Skip to content

Instantly share code, notes, and snippets.

@JoshBarr
Created March 16, 2016 20:40
Show Gist options
  • Save JoshBarr/57c02fdac59f4e8c9205 to your computer and use it in GitHub Desktop.
Save JoshBarr/57c02fdac59f4e8c9205 to your computer and use it in GitHub Desktop.
Wagtail front-end permissions mixin
# Mixin
class PermissionRequiredMixin:
required_permissions = []
def route(self, request, path_components):
if not request.user.has_perms(self.required_permissions):
return RouteResult(self, kwargs={'permission_check_failed': True})
return super().route(request, path_components)
def serve_permission_error(self, request):
"""
Respond with a polite message informing the user they need to log in
"""
raise NotImplementedError
def serve(self, request, *args, permission_check_failed=False, **kwargs):
if permission_check_failed:
return self.serve_permission_error(request)
return super().serve(request, *args, **kwargs)
# Implementation:
class ClientAreaHomePage(PermissionRequiredMixin, Page):
required_permissions = ['client_area.can_access_client_area']
def serve_permission_error(self, request):
return TemplateResponse(request, 'login.html')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment