feat: expand admin and data sync workflows
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user