39 Mostrar solo carpetas de USUARIOS AUTENTICADOS en el curso de LARAVEL (PHP y MySql) FullStack

Duración: 14 min
Módulo: 🗑️ Eliminación y Seguridad de Archivos Lección 3 de 6

Descripción

🔒 Lección 39: Mostrar solo Carpetas de Usuarios Autenticados

Este capítulo se centra en la implementación del control de acceso que garantiza que cada usuario solo vea las carpetas que ha creado, basándose en la relación user_ID establecida en el capítulo anterior.

⚙️ Configuración de las Relaciones en los Modelos

Para que Laravel pueda manejar las consultas con las relaciones, se definen los métodos de relación en los modelos:

  1. Modelo User (Usuarios): Se define la función carpeta() para establecer la relación hasMany (tiene muchos) con el modelo Carpeta. Esto significa que un usuario puede tener múltiples carpetas [01:40].
  2. Modelo Carpeta (Carpetas): Se define la función user() para establecer la relación belongsTo (pertenece a) con el modelo User. Esto significa que una carpeta pertenece a un único usuario [02:29].

💾 Asignación del Propietario al Crear una Carpeta

Para que la base de datos registre el propietario de cada nueva carpeta, se modifica el formulario de creación:

  1. Campo Oculto: En la vista mi_unidad/index.blade.php, se agrega un campo <input type="hidden"> al formulario de creación de carpetas para enviar el ID del usuario autenticado [03:47].
  2. Obtención del ID: El valor de este campo (value) se obtiene utilizando la fachada de autenticación de Laravel: Auth::user()->id [04:16].
  3. Almacenamiento en el Controlador: En el método store del CarpetaController, se recibe este user_ID y se guarda en la base de datos junto con el nombre de la carpeta [05:19].

Ahora, cada registro en la tabla carpetas tiene un user_ID que lo vincula a un propietario [05:46].

🧐 Filtro de Carpetas por Usuario Autenticado

El paso final es modificar la consulta en el controlador para que solo devuelva las carpetas del usuario actual:

  1. Obtención del ID Autenticado: En el método index del CarpetaController, se recupera el ID del usuario actual y se almacena en una variable [07:37].

    PHP

    $id_user = Auth::user()->id;

  2. Aplicación del Filtro: La consulta para obtener las carpetas se modifica con una cláusula where para filtrar los resultados:
    • Antes: $carpetas = Carpeta::get();
    • Ahora: Se añade ->where('user_ID', $id_user) para que solo se traigan las carpetas donde el ID de usuario de la carpeta coincida con el ID del usuario autenticado [08:14].

Resultado de la Prueba:

  • Al ingresar con el Usuario 1, solo se ven las carpetas creadas por el Usuario 1.
  • Al ingresar con el Usuario 2, solo se ven las carpetas creadas por el Usuario 2 [11:58].
  • Se demuestra que la separación de archivos funciona correctamente [12:06].

🛑 Próximo Paso

Al final del video, se identifica un error: al crear una subcarpeta dentro de una carpeta existente, la creación falla porque la lógica de asignación del user_ID también debe replicarse en la vista de subcarpetas (show.blade.php) [13:09]. El siguiente capítulo abordará esta corrección y continuará con las acciones del sistema.