feat(admin): botón Borrar usuario + fix modal cierra al clic fondo
* admin/api.php: nuevo endpoint DELETE ?action=delete_user con salvaguardas:
- No te puedes eliminar a ti mismo
- No puedes eliminar a otro Socio (cambiar su rol primero)
- CASCADE de tramites_involucrados limpia vínculos N:M automáticamente
- Strings históricos (creado_por, abogado, autor_email) permanecen como
referencia muerta para preservar trazabilidad de trámites antiguos
* admin.html: botón rojo "Borrar usuario" en el footer del modal, visible
solo en modo edición (no en crear). Confirmación contextual según si es
placeholder o usuario real. Pista en el hint del email sobre usar Borrar
cuando hay conflicto.
* Fix: removido onclick del modal-overlay que cerraba el modal al hacer
clic en el padding del backdrop. Ahora solo cierra con ✕, Cancelar,
Esc, o Guardar exitoso. Más predecible.
This commit is contained in:
@@ -119,6 +119,27 @@ try {
|
||||
ok($row);
|
||||
}
|
||||
|
||||
if ($method === 'DELETE' && $action === 'delete_user') {
|
||||
$id = (int)($_GET['id'] ?? 0);
|
||||
if (!$id) err('id requerido');
|
||||
if ($id === $me) err('No puedes eliminarte a ti mismo', 400);
|
||||
|
||||
$sel = $pdo->prepare('SELECT id, email, role FROM users WHERE id = :id');
|
||||
$sel->execute([':id' => $id]);
|
||||
$u = $sel->fetch();
|
||||
if (!$u) err('Usuario no encontrado', 404);
|
||||
if ($u['role'] === 'socio') {
|
||||
err('No puedes eliminar a otro Socio. Cambia su rol a Abogado o Usuario primero.', 400);
|
||||
}
|
||||
|
||||
// CASCADE de tramites_involucrados limpia los vínculos automáticamente.
|
||||
// Los strings históricos (tramite.creado_por, tramite.abogado, obs.autor_email,
|
||||
// hours.autor_email) permanecen como referencia muerta — eso es lo deseado para
|
||||
// preservar la trazabilidad de trámites antiguos.
|
||||
$pdo->prepare('DELETE FROM users WHERE id = :id')->execute([':id' => $id]);
|
||||
ok(['deleted' => $id, 'email' => $u['email']]);
|
||||
}
|
||||
|
||||
err('Acción no reconocida', 404);
|
||||
|
||||
} catch (PDOException $e) {
|
||||
|
||||
Reference in New Issue
Block a user