From eec143d63b0c92a2ad46137db129eafa9b24fb22 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Sat, 15 Mar 2025 00:54:56 +0100 Subject: [PATCH] Skeleton: Add "Forgot Password" button to login drawer --- src/routes/+layout.svelte | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index f02c943..2a0629d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -46,6 +46,8 @@ import { clear_auth, pb, pbUser, refresh_auth, subscribe, unsubscribe } from "$lib/pocketbase"; import { AVATAR_HEIGHT, AVATAR_WIDTH } from "$lib/config"; import { error } from "@sveltejs/kit"; + import type { User } from "$lib/schema"; + import type { RecordModel } from "pocketbase"; let { data, children }: { data: LayoutData; children: Snippet } = $props(); @@ -192,6 +194,29 @@ password_value = ""; }; + const forgot_password = async (): Promise => { + if (!username_value || username_value.trim() === "") { + toastStore.trigger(get_error_toast("Please enter a username!")); + return; + } + + try { + const user: RecordModel = await pb + .collection("users") + .getFirstListItem(`username="${username_value}"`); + + if (!user.email) { + toastStore.trigger(get_error_toast("You did not set a recovery e-mail address!")); + return; + } + + await pb.collection("users").requestPasswordReset(user.email); + toastStore.trigger(get_info_toast("Check your inbox!")); + } catch (error) { + toastStore.trigger(get_error_toast("" + error)); + } + }; + const update_profile = (create?: boolean): (() => Promise) => { const handler = async (): Promise => { // Avatar handling @@ -244,6 +269,7 @@ username: username_value.trim(), firstname: firstname_value.trim(), email: email_value.trim(), + emailVisibility: true, password: password_value.trim(), passwordConfirm: password_value.trim(), // lol admin: false, @@ -448,8 +474,9 @@
+
{$pbUser.verified ? "Verified" : "Not Verified"}