97 Permisos del Usuario en el Sistema con LARAVEL(PHP-MySql) FullStack

Duración: 18 min
Módulo: 🗓️ Reserva de Citas y FullCalendar Lección 12 de 14

Descripción

🛡️👤 Lección 97: Restricción de Acceso con Permisos de Usuario (Laravel)

Esta lección marca una transición importante en el sistema, pasando del desarrollo de funcionalidades para el Usuario (paciente) a la implementación de vistas y permisos específicos para el Doctor. El foco principal es restringir las funcionalidades del menú para que cada rol solo vea lo que le corresponde.

1. 🚪 Transición y Restricción de la Vista

El objetivo es asegurar que la funcionalidad de reserva de citas y el historial de reservas (la vista de "Ver las Reservas") solo sean visibles para el usuario normal (paciente), y no para el doctor o el administrador.

  • Identificación del Problema: Al iniciar sesión como doctor, se seguían mostrando las opciones de "Reserva tu cita médica" y "Ver las Reservas", que son irrelevantes para su rol [01:35].
  • Solución en la Vista (Blade): Se utiliza la directiva @can de Laravel en la vista admin.index para envolver los botones de reserva y el historial.
    • La directiva se configura para verificar si el usuario tiene permiso de admin-eventos-create (para la reserva) o ver-reservas (para el historial) [10:31].
    • Resultado: Al iniciar sesión como doctor, estos botones desaparecen, dejando solo la interfaz limpia que el doctor necesitará [11:35].

2. 🧱 Refactorización de Rutas y Permisos

Para soportar la restricción en la vista, se tuvo que formalizar la estructura de permisos para las rutas utilizadas por el usuario.

  • Separación de Rutas: Se agruparon las rutas específicas del paciente (como cargar-consultorio, cargar-reservas-doctores, ver-reservas, admin-eventos-create y admin-eventos-destroy) bajo una nueva sección llamada "Rutas para el usuario" en web.php [03:58].
  • Definición de Permisos: Se definieron los siguientes permisos para el rol de usuario (paciente) en el Seeder de roles [05:43]:
    • consultorio-id
    • cargar-reservas-doctores
    • ver-reservas
    • admin-eventos-create
    • admin-eventos-destroy
  • Asignación de Middleware: Se aplicó el middleware de autorización can a estas rutas para que solo los roles con estos permisos puedan acceder a ellas a nivel de backend [07:29].

3. ⚙️ Reconstrucción y Configuración Inicial

Debido a que los permisos son datos de configuración críticos, se ejecutó una migración con fresh y seed para cargar la nueva estructura.

  • Comando de Reconstrucción: Se ejecutó php artisan migrate:fresh --seed para regenerar la base de datos y asegurar que los nuevos permisos estuvieran en la tabla permissions y asignados al rol usuario [08:50].
  • Creación de Horario por Defecto: Para evitar la pérdida de datos necesarios para pruebas (como los horarios de atención), se agregó una entrada en el DatabaseSeeder que crea un horario básico de lunes a viernes para el doctor 1, permitiendo que el sistema sea funcional inmediatamente después de la reconstrucción [14:40].

➡️ Próximo Paso

El siguiente capítulo se enfocará en construir la vista específica que el doctor necesita: un calendario que muestre solo las citas médicas que él tiene asignadas [17:20].