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 @@ + + +
+ (open = !open)}> + + +

Cambiar Contraseña

+
+
+ + + + +

= 8 + }} + > + {nuevapass.length} +

+ / 8 +
+
+
+ + +
+
+
+
+
+
+ (openMensaje = false)}> + {$inspect(error)} + {error === '' ? 'Se modificó el usuario' : error} + +
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);
-

- Gestion Usuarios -

+ + +

+ Gestion Usuarios +

+
+
{#if page.data.usuarios.length === 0} {#if page.data.error}