77 Mostrar el Panel Principal según los Roles y Permisos en Sistema con LARAVEL(PHP-MySql) FullStack

Duración: 13 min
Módulo: 🔑 Seguridad, Roles y Permisos Lección 7 de 15

Descripción

👁️‍🗨️ Lección 77: Restricción del Panel Principal (Widgets) por Roles y Permisos

Esta lección práctica se centra en el uso de la directiva @can de Laravel/Spatie para asegurar que la información sensible en el panel de control (los widgets o tarjetas de resumen) sea visible solo para los roles que tienen el permiso correspondiente, evitando que un Doctor o un Paciente vean totales del sistema.

🧱 1. La Directiva @can para Vistas

Para restringir elementos específicos en la vista (como un botón, un enlace o una tarjeta de resumen), se utiliza la directiva de Blade @can [03:17]:

  • Sintaxis: @can('nombre-del-permiso') ... @endcan
  • Lógica: Esta directiva comprueba si el usuario autenticado tiene el permiso especificado en el seeder. Si lo tiene, el contenido se renderiza; si no, se oculta por completo.

🛑 2. Restricción de Información Sensible

Se aplica la directiva @can a los widgets del dashboard basándose en los permisos de ruta definidos previamente.

  • Total de Usuarios / Total de Secretarias: * Permiso Requerido: admin.usuarios.index (y rutas similares).
    • Acceso Concedido: Solamente al rol admin [03:39].
    • Resultado: Estos widgets se ocultan para los roles de Secretaria, Doctor, Paciente y Usuario normal [03:48].
  • Total de Pacientes: * Permiso Requerido: Acceso a las rutas del módulo de pacientes (ej. admin.pacientes.index).
    • Acceso Concedido: A los roles admin y secretaria [06:11].
    • Resultado: El Administrador y la Secretaria pueden ver el total de pacientes, mientras que otros roles no [07:51].
  • Módulos de Gestión (Consultorios, Doctores, Horarios): * Los widgets para estos módulos también se restringen a los roles admin y secretaria, ya que solo ellos tienen las responsabilidades de gestión [00:08:29 - 00:11:19].

🚧 3. Tareas Pendientes y Seguridad

A pesar de que la información se oculta visualmente en el panel, se identifica una brecha de seguridad crítica.

  • Acceso por URL: Aunque el contenido se oculta en el dashboard, un usuario sin permisos (ej. un usuario normal) aún puede acceder a las páginas de administración (ej. /admin/usuarios) si conoce la URL directamente [12:10].
  • Próximo Paso: La siguiente lección se enfocará en proteger el menú de navegación y, más importante aún, aplicar middlewares de Spatie a las rutas para denegar el acceso directo a nivel de servidor [12:39].