24 lines
722 B
Python
24 lines
722 B
Python
from functools import wraps
|
|
|
|
from django.contrib import messages
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import redirect
|
|
from django.utils.translation import gettext as _
|
|
|
|
from .roles import user_has_capability
|
|
|
|
|
|
def require_capability(capability: str):
|
|
def decorator(view_func):
|
|
@wraps(view_func)
|
|
@login_required
|
|
def wrapped(request, *args, **kwargs):
|
|
if not user_has_capability(request.user, capability):
|
|
messages.error(request, _('Sie haben keine Berechtigung für diese Aktion.'))
|
|
return redirect('home')
|
|
return view_func(request, *args, **kwargs)
|
|
|
|
return wrapped
|
|
|
|
return decorator
|