Files
erp-efintel-2026-portainer/expenses/decorators.py
T

20 lines
810 B
Python

from functools import wraps
from django.shortcuts import redirect
from django.contrib import messages
def role_required(*group_names):
"""Decorator that checks if the user belongs to at least one of the specified groups."""
def decorator(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
if request.user.is_superuser:
return view_func(request, *args, **kwargs)
user_groups = request.user.groups.values_list('name', flat=True)
if any(group in user_groups for group in group_names):
return view_func(request, *args, **kwargs)
messages.error(request, 'No tienes permisos para acceder a esta sección.')
return redirect('dashboard')
return wrapper
return decorator