97 Permisos del Usuario en el Sistema con LARAVEL(PHP-MySql) FullStack
Duración: 18 minDescripció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.
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].
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️