38 Módelo entidad relación USUARIOS - CARPETAS en el curso de LARAVEL (PHP y MySql) FullStack
Duración: 9 minDescripción
🔑 Lección 38: Modelo Entidad-Relación entre Usuarios y Carpetas
Este capítulo es crucial para la seguridad y la privacidad del sistema de gestión de archivos. El instructor aborda un fallo de diseño inicial donde todos los usuarios podían ver las carpetas y archivos creados por otros, y procede a implementar el modelo entidad-relación necesario para enlazar las carpetas a usuarios específicos.
🐛 Identificación del Problema de Seguridad
El instructor demuestra que, al iniciar sesión con diferentes cuentas de usuario (administrador, usuario 1, usuario 2), todos los usuarios visualizan exactamente las mismas carpetas y archivos en la sección "Mi Unidad" [01:48].
Esto se debe a que las tablas de carpetas y archivos no están vinculadas a la tabla de usuarios, lo que hace que el sistema sea inseguro y no funcional para múltiples usuarios.
🏗️ Creación de la Relación Uno a Muchos
Para resolver el problema, se establece una relación Uno a Muchos entre la tabla de usuarios y la tabla de carpetas: un usuario puede tener muchas carpetas, pero una carpeta pertenece a un solo usuario [06:00].
1. Modificación de la Migración
Se modifica el archivo de migración de la tabla carpetas para añadir una llave foránea:
- Columna user_ID: Se agrega una columna unsignedBigInteger con el nombre user_ID para almacenar el identificador del usuario propietario de la carpeta [03:59].
- Restricción de Clave Foránea: Se define la columna user_ID como una clave foránea que referencia el campo id de la tabla users [04:17]. Se establecen las opciones on update cascade y on delete cascade.
2. Aplicación de la Migración
- Se utiliza el comando php artisan migrate:refresh para eliminar las tablas existentes y volver a migrarlas con la nueva estructura de la base de datos [05:01].
- Se comprueba en la base de datos que la tabla carpetas ahora incluye el campo user_ID y la restricción de clave foránea con la tabla users [05:38].
- Se ejecuta el seeder (php artisan db:seed) para recrear los datos de prueba, incluyendo el usuario administrador [06:55].
🚀 Próximos Pasos
El sistema ya tiene la estructura de base de datos necesaria. El instructor anuncia que el siguiente paso será implementar la lógica en el controlador para que, al crear una carpeta, se le asigne automáticamente el user_ID del usuario autenticado, y para que la vista solo muestre las carpetas que coincidan con ese user_ID [07:38].
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! ❤️