diff --git a/src/lib/components/TablaUsuarios.svelte b/src/lib/components/TablaUsuarios.svelte
index 25ffd32..474a54b 100644
--- a/src/lib/components/TablaUsuarios.svelte
+++ b/src/lib/components/TablaUsuarios.svelte
@@ -5,15 +5,40 @@
import TableHeader from '@/components/ui/table/table-header.svelte';
import TableRow from '@/components/ui/table/table-row.svelte';
import Table from '@/components/ui/table/table.svelte';
- import type { UserResponseDto } from '../../../types';
+ import type { UserResponseDto } from '../../types';
+ import Button from './ui/button/button.svelte';
+ import KeyIcon from '@lucide/svelte/icons/key';
+ import { Tooltip } from './ui/tooltip';
+ import TooltipTrigger from './ui/tooltip/tooltip-trigger.svelte';
+ import TooltipContent from './ui/tooltip/tooltip-content.svelte';
+ import RecuperarContraseña from './admin/RecuperarContraseña.svelte';
+ import { Dialog } from './ui/dialog';
+ import DialogContent from './ui/dialog/dialog-content.svelte';
interface Props {
usuarios: UserResponseDto[];
}
let { usuarios }: Props = $props();
+
+ let open = $state(false);
+
+ //si ponia contraseña en español quedaba muy largo el nombre
+ let usuarioCambioPass: UserResponseDto | null = $state(null);
+
+ $effect(() => {
+ if (!open) {
+ usuarioCambioPass = null;
+ }
+ });
+
+ function handleCambiarContraseña(usuario: UserResponseDto) {
+ open = true;
+ usuarioCambioPass = usuario;
+ }
+
@@ -31,8 +56,20 @@
{usuario.displayName}
?
{usuario.createdAt.replace('Z', ' ').replace('T', ' | ')}
- ?
+
+
+
+
+
+
+ Recuperar Contraseña
+
+
+
+
+
{/each}
+
diff --git a/src/lib/components/admin/RecuperarContraseña.svelte b/src/lib/components/admin/RecuperarContraseña.svelte
new file mode 100644
index 0000000..b9e68b5
--- /dev/null
+++ b/src/lib/components/admin/RecuperarContraseña.svelte
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/hooks/cambiarContraseña.ts b/src/lib/hooks/cambiarContraseña.ts
new file mode 100644
index 0000000..5721693
--- /dev/null
+++ b/src/lib/hooks/cambiarContraseña.ts
@@ -0,0 +1,24 @@
+import { apiBase } from '@/stores/url';
+import { get } from 'svelte/store';
+import type { UserResponseDto } from '../../types';
+import { sesionStore } from '@/stores/usuario';
+
+export async function cambiarContraseña(usuario: UserResponseDto, newpass: string) {
+ try {
+ const req = await fetch(get(apiBase) + '/api/admin/password', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${get(sesionStore)?.accessToken}`
+ },
+ body: JSON.stringify({ id: usuario.id, newpass })
+ });
+ if (req.ok) {
+ return '';
+ }
+ const data = await req.json();
+ return data.message;
+ } catch {
+ return 'No se pudo alcanzar el servidor';
+ }
+}
diff --git a/src/routes/(privado)/admin/+page.svelte b/src/routes/(privado)/admin/+page.svelte
index 1bdd3a4..29fdd2b 100644
--- a/src/routes/(privado)/admin/+page.svelte
+++ b/src/routes/(privado)/admin/+page.svelte
@@ -12,18 +12,22 @@
import TableCell from '@/components/ui/table/table-cell.svelte';
import { page } from '$app/state';
import TablaUsuarios from '@/components/TablaUsuarios.svelte';
+ import CardTitle from '@/components/ui/card/card-title.svelte';
+ import CardHeader from '@/components/ui/card/card-header.svelte';
let cargando = $state(true);
-
+
+
+
+
+
{#if page.data.usuarios.length === 0}
{#if page.data.error}