from functools import wraps
from django.shortcuts import redirect
from django.contrib import messages

def role_required(*required_roles):
    """
    Decorator to restrict access based on one or more user roles.

    Usage:
        @role_required('employee')
        @role_required('employee', 'manager')
    """
    def decorator(view_func):
        @wraps(view_func)
        def _wrapped_view(request, *args, **kwargs):
            if not hasattr(request.user, 'profile'):
                messages.error(request, "Perfil de usuário não encontrado. Contate o administrador.")
                return redirect('login')

            if request.user.profile.role not in required_roles:
                messages.error(request, "Você não tem permissão para acessar esta página.")
                return redirect('dashboard')

            return view_func(request, *args, **kwargs)
        return _wrapped_view
    return decorator
