07 ✏️ Editar Usuario - Eliminar Usuario y Restaurar Usuario - Soft Delete | Laravel Sistema Parqueo

Duración: 57 min
Módulo: 👑 Módulos de Usuarios y Seguridad Inicial Lección 5 de 5

Descripción

🛠️ LECCIÓN 07: Editar, Eliminar y Restaurar Usuario (Soft Delete) | Laravel Sistema de Parqueo

Esta lección cubre la implementación completa de las acciones de Editar, Eliminar y Restaurar usuarios, utilizando el concepto de Soft Delete (eliminación suave) de Laravel para una gestión segura de registros.

1. Funcionalidad de Edición (edit y update) ✏️

  • 1.1. Método edit (Carga de Datos):
    • Se recibe el ID del usuario a editar [02:10].
    • Se utiliza User::find($id) para obtener la información completa del usuario [02:45].
    • Se consultan y envían todos los roles disponibles (Role::all()) [05:30].
    • Se retorna la vista edit.blade.php, precargada con los datos del usuario y roles [02:59].
  • 1.2. Vista de Edición (edit.blade.php):
    • Se ajusta el layout (cambio de primary a success) para indicar que es un formulario de actualización [05:10].
    • Se precargan todos los campos (value y selected) con la información del usuario, incluyendo el rol actual y el tipo de documento [00:06:04 - 00:11:13].
  • 1.3. Método update (Actualización de Datos):
    • Se implementa la validación de los campos del formulario, asegurando que el email y el número de documento sean únicos, exceptuando al usuario que se está editando [00:16:04 - 00:17:25].
    • Se actualizan los campos básicos del usuario [17:41].
    • Se utiliza syncRoles($request->role) para actualizar el rol del usuario, asegurando que solo tenga el rol seleccionado [18:30].

2. Gestión de Listado y Acciones de Eliminación ❌

  • 2.1. Filtro en el Listado (index):
    • Se modifica la consulta del index para excluir al Super Admin de la lista de usuarios, utilizando la cláusula whereDoesntHave('roles', ...) [00:23:23 - 00:25:03].
  • 2.2. Implementación de Soft Delete:
    • Se verifica que el modelo User tenga la trait SoftDeletes para habilitar la eliminación suave [34:55].
    • Método destroy (Eliminación Suave):
      • Validación de seguridad: Se verifica que el usuario autenticado no intente eliminarse a sí mismo [27:08].
      • Antes de eliminar, se actualiza el campo estado a false (0) para indicar inactividad [37:28].
      • Se utiliza $usuario->delete(), que no elimina el registro de la base de datos, sino que solo agrega una marca de tiempo en el campo deleted_at [33:50].

3. Restauración de Usuarios y Vista de Eliminados 🔄

  • 3.1. Listar Eliminados:
    • Se modifica la consulta del index para incluir registros eliminados (con deleted_at lleno) utilizando ->withTrashed() [41:10].
  • 3.2. Diferenciación de Acciones en la Vista:
    • Se usa una condicional (@if ($user->deleted_at === null)) en la vista index para mostrar:
      • Botones de Ver, Editar y Eliminar para usuarios activos [42:45].
      • Botón de Restaurar para usuarios eliminados (inactivos) [43:48].
  • 3.3. Método restore:
    • Se crea la ruta y el método restore en el controlador [45:34].
    • Se busca el usuario eliminado con User::withTrashed()->find($id) [53:11].
    • Se utiliza el método $usuario->restore() para remover la marca de tiempo de deleted_at [54:00].
    • Se actualiza el campo estado a true (1), reactivando la cuenta para el acceso al sistema [00:54:33 - 00:55:16].