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