16 ♻️ RESTAURAR Usuarios Eliminados | Papelera de Reciclaje (Trashing) en Laravel 12 CRUD FullStack

Duración: 15 min
Módulo: 🛡️ Roles, Permisos y Gestión de Usuarios (Spatie) 7-16 Lección 10 de 10

Descripción

Lección 16: ♻️ Recuperación y Auditoría: Restauración de Usuarios y Papelera de Reciclaje

Este capítulo cierra el módulo de usuarios implementando la funcionalidad de "papelera de reciclaje" (Trashing), que permite restaurar registros previamente eliminados suavemente (Soft Deletes), manteniendo la integridad y la auditoría del sistema.

🔍 Extensión del Listado (Index)

Se modifica la consulta principal en el controlador para gestionar tanto usuarios activos como inactivos:

  • 👻 Mostrar Eliminados: Se incorpora el método withTrashed() a la consulta [06:41], lo que fuerza a Laravel a incluir los usuarios inactivos o "eliminados" (aquellos con el campo deleted_at rellenado).
  • 🛡️ Exclusión de SuperAdmin: Se añade un filtro para omitir al usuario con el rol Super Admin [06:19], asegurando que el administrador total no pueda ser modificado o eliminado por accidente.
  • 🚦 Indicador de Estado: Una nueva columna muestra el estado del usuario [04:45] como Activo o Inactivo, según el valor de su campo estado en la base de datos [05:22].

🧱 Lógica de Acciones Condicionales

La interfaz se adapta para ofrecer solo acciones pertinentes a cada registro:

  • 🟢 Usuarios Activos: Solo aquellos usuarios con estado = 1 (activo) pueden ser Editados o Eliminados [07:54].
  • 🟠 Usuarios Inactivos: Los registros eliminados (estado = 0) deshabilitan las acciones de edición/eliminación y, en su lugar, muestran un botón de Restaurar [08:12].

💾 Implementación de la Restauración (Restore)

Se define el proceso para traer de vuelta un usuario al sistema:

  • 🔗 Ruta y Función: Se crea la ruta POST para la acción restaurar [01:52] y se define la función restore() en el controlador [02:31] que recibe el ID del usuario.
  • 💬 Confirmación: El usuario debe confirmar la acción mediante una ventana de SweetAlert2 [12:15] antes de proceder con la recuperación.
  • 🔁 Lógica de Recuperación: La función ejecuta dos pasos esenciales [13:35]:
    1. Ejecuta el método restore() de Laravel para establecer el campo deleted_at a null.
    2. Actualiza el campo estado del usuario a true (1), reactivando su acceso al sistema.
  • ✅ Éxito: La acción concluye con un mensaje de "usuario restaurado exitosamente" [13:57], y el usuario vuelve al listado como un registro activo [14:08].