99 ¿Qué falta para terminar el sistema de reserva de citas medicas? con LARAVEL(PHP-MySql) FullStack
Duración: 6 minDescripción
🛡️ Detección de Rol y Seguridad del Dashboard del Doctor
Esta lección culmina la configuración de la vista principal del Doctor asegurando que solo los usuarios que están asociados al modelo Doctor puedan acceder a su dashboard de citas. Este paso fue crucial para resolver un error que impedía a los usuarios normales (pacientes) ingresar al sistema.
🚨 Problema Resuelto: Acceso No Autorizado
El error surgía cuando un usuario que no era doctor intentaba acceder a la ruta /admin [00:33]. La vista del dashboard intentaba ejecutar código específico del doctor, como Auth::user()->doctor->id, lo cual fallaba para un paciente porque la relación doctor no existe en su objeto de usuario.
✅ Solución: Validación de Relación en Blade
Para solucionar la vulnerabilidad y el error, se utilizó una validación condicional estricta en la vista principal (admin/index.blade.php) para filtrar la ejecución del código del doctor.
La lógica verifica si el usuario autenticado tiene una relación activa con el modelo Doctor. Si la relación se encuentra, significa que el usuario tiene el rol de médico, y el código se ejecuta.
Sintaxis de la Validación [03:23]
El bloque de código que genera la tabla de reservas para el médico se encerró en la siguiente condición Blade:
Blade
@if (Auth::user()->check() && Auth::user()->doctor) {{-- Aquí se muestra la tabla de citas filtradas por doctor --}} @endif
- Auth::user()->check(): Confirma que el usuario esté autenticado.
- Auth::user()->doctor: Verifica la existencia de la relación con el modelo Doctor. Si existe, devuelve el objeto del doctor (es verdadero); si no existe, devuelve null (es falso).
Al implementar esta condición, el error se elimina, y el Doctor ve su dashboard de reservas de forma exclusiva [03:41].
⏭️ Conclusión del Módulo y Próximos Pasos
Con la seguridad del acceso de roles ya establecida, el módulo de reserva de citas se considera funcionalmente completo en sus aspectos principales.
El curso continuará enfocándose en la finalización del sistema con los dos módulos restantes:
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! ❤️