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