PHP JavaScript

Restricción de la Interfaz de Usuario de Filament para Reclutadores y Panel Dedicado

Este post describe cómo restringimos la interfaz de usuario de Filament para usuarios reclutadores en el proyecto devlog-ist/landing, un proyecto que probablemente se encarga de la página de aterrizaje y las funcionalidades relacionadas con el registro y la gestión de usuarios.

El Problema

En nuestro sistema, los usuarios con rol de reclutador tenían acceso a secciones de la interfaz de Filament que no eran relevantes para sus tareas. Esto podía generar confusión y potenciales errores. Además, necesitábamos una forma más eficiente para que los reclutadores gestionaran sus tareas específicas, como la búsqueda de candidatos y la administración de tokens.

La Solución

Implementamos las siguientes mejoras:

  1. Restricción de acceso: Ocultamos todas las páginas y recursos de Filament que no son relevantes para los usuarios con rol de reclutador.
  2. Bypass de middleware: Los reclutadores ya no están obligados a pasar por los requisitos de LinkedIn/CV, simplificando su flujo de trabajo.
  3. Panel de Reclutador Dedicado: Creamos un nuevo panel de control (RecruiterDashboard) con las siguientes características:
    • Resumen de funcionalidades.
    • Selector de idioma.
    • Contador de tokens.

Esta solución centraliza las herramientas que los reclutadores necesitan y elimina el desorden de opciones innecesarias.

Implementación

Para restringir el acceso, utilizamos el sistema de roles y permisos de Filament, definiendo un rol de "reclutador" y asignando permisos específicos a este rol. Luego, aplicamos un middleware que verifica el rol del usuario y redirige a la página correspondiente si no tiene los permisos necesarios. El nuevo panel de control se implementó como un recurso de Filament con componentes personalizados para mostrar la información relevante.

Para el bypass del middleware, ajustamos la lógica para que detecte el rol del usuario y salte la validación si es un reclutador. Esto evita la necesidad de autenticación innecesaria para estos usuarios.

El RecruiterDashboard es un componente centralizado que ofrece una visión general de las funciones clave:

// Ejemplo de un componente del RecruiterDashboard
use Filament\Widgets\Widget;

class TokenCount extends Widget
{
    protected static string $view = 'filament.widgets.token-count';

    public function mount(): void
    {
        $this->tokens = auth()->user()->tokens()->count();
    }

    public int $tokens;
}

Este componente muestra el número de tokens del usuario autenticado. La vista filament.widgets.token-count contendría la lógica para renderizar este valor.

El Resultado

Con estas mejoras, los reclutadores tienen una experiencia más eficiente y enfocada en la plataforma. La interfaz de usuario es más limpia y relevante, y el panel de control dedicado les proporciona acceso rápido a las herramientas que necesitan. Esto se traduce en una mayor productividad y una menor curva de aprendizaje para los nuevos reclutadores.

Restricción de la Interfaz de Usuario de Filament para Reclutadores y Panel Dedicado
Gerardo Ruiz

Gerardo Ruiz

Author

Share: