70 Comprobar las rutas con los roles en el curso de Sistema de Gestión Escolar(PHP y MySql)FullStack
Duración: 29 min¡Contenido Exclusivo!
Adquiere este curso para tener acceso inmediato a esta y a **todas las lecciones Premium**.
Inscribirse Ahora por $20.00 Acceso instantáneo de por vida y código fuente incluido.Descripción
Lección 70: Comprobación de Acceso y Rutas por Rol 🚦
Esta lección implementó el mecanismo para verificar si un usuario, una vez autenticado, tiene permiso para ingresar a la ruta (URL) que está solicitando. Este sistema de seguridad es preventivo y se aplica en cada página que el usuario intenta cargar.
1. Punto de Control: Dónde se Aplica la Lógica 🛡️
La comprobación se insertó en el layout principal del sistema (donde se comprueba si el usuario está logueado), asegurando que la verificación de permisos se ejecute antes de cargar cualquier contenido de la vista.
| Icono | Descripción |
|---|---|
| 💻 | Ubicación: El código de verificación se añadió en los archivos de layout que se incluyen en todas las vistas (parte 1 o 2) [00:49]. |
| 🔑 | Propósito: Evitar que un usuario (por ejemplo, un Docente) acceda directamente a una URL de un módulo no autorizado (como el de Pagos o Roles) [01:17]. |
2. Paso 1: Obtención y Recorte de la Ruta (URL) ✂️
Para comparar la ruta actual con las URLs registradas en la base de datos (que no incluyen la ruta base del servidor), fue necesario aislar la parte relevante de la dirección.
- Ruta Completa: Se utiliza la variable de servidor de PHP $_SERVER['PHP_SELF'] para capturar la URL completa del archivo que se está ejecutando, incluyendo el nombre del script (ej. index.php) [08:15].
- Cálculo de Recorte: Se calcula el número de caracteres que componen la ruta base del proyecto (ej. sistema_gestion_escolar/). En este caso, la longitud era de 18 caracteres [06:46].
- Extracción: Se usa la función substr para recortar los caracteres iniciales y obtener solo la URL del módulo (ej. app/vistas/grados/index.php), que es la ruta que está registrada en la tabla permisos. Esta parte se almacena en la variable $restante [05:51].
3. Paso 2: Comparación con la Base de Datos 🔎
Una vez extraída la URL actual, el sistema consulta los permisos del usuario para ver si la ruta $restante coincide con alguno de ellos.
- ID de Rol: Se recupera el ID_rol del usuario actualmente logueado desde la sesión [09:29].
- Consulta de Permisos: Se ejecuta una consulta que trae todos los permisos asignados al sistema [09:49].
- Filtro Iterativo:
- Contador: Un contador ($contador_permiso) se inicializa a cero. Si se encuentra alguna coincidencia (lo que significa que la ruta está autorizada para este rol), el contador se incrementa a uno (o más) [25:07].
4. Paso 3: Verificación Final y Resultado 🛑
El valor final del contador determina si el usuario puede permanecer en la página.
- Acceso Autorizado: Si el $contador_permiso > 0, el usuario tiene al menos un permiso que coincide con la ruta actual. El código continúa, cargando el contenido de la página.
- Acceso Bloqueado: Si el $contador_permiso == 0 (es decir, no se encontró ninguna coincidencia en sus permisos), se muestra un mensaje de "usuario no autorizado" [27:42].
El próximo paso será hacer que la respuesta de "usuario no autorizado" sea más elegante y, además, se aplicará el mismo control de acceso para ocultar los elementos del menú de navegación.
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! ❤️