feat: expand admin and data sync workflows
Build and Push Images / Build jorgecuadros-web (push) Successful in 1m40s
Build and Push Images / Build jorgecuadros-api (push) Successful in 3m13s

This commit is contained in:
2026-07-23 22:00:08 -07:00
parent 70911e7e62
commit 27b3bd9efc
9 changed files with 127 additions and 13 deletions
+30
View File
@@ -6,6 +6,7 @@ import { useAuth, useCan } from "@/lib/abilities";
import { ROLE_LABEL, ROLES_DESC } from "@/lib/labels";
import {
createUser,
deleteUser,
listUsers,
resetUserPassword,
updateUser,
@@ -133,6 +134,22 @@ function UsuariosAdmin() {
}
}
async function submitDelete(u: UserRow) {
if (!window.confirm(`¿Eliminar al usuario "${u.name}"? Esta acción no se puede deshacer.`)) {
return;
}
setError(null);
setNotice(null);
try {
await deleteUser(u.id);
if (editingId === u.id) startCreate();
setNotice("Usuario eliminado.");
refresh();
} catch (e) {
setError((e as Error)?.message ?? "No se pudo eliminar el usuario.");
}
}
return (
<>
<div className="page-head">
@@ -312,6 +329,19 @@ function UsuariosAdmin() {
>
Contraseña
</button>
<button
className="btn btn-ghost btn-danger"
type="button"
disabled={u.id === me?.id}
title={
u.id === me?.id
? "No puede eliminar su propia cuenta"
: "Eliminar usuario"
}
onClick={() => submitDelete(u)}
>
Eliminar
</button>
</div>
)}
</td>