feat: Delete account functionality

This commit is contained in:
April Hall 2025-02-15 21:01:23 -05:00
parent c0688e87b0
commit 51d255d15d
Signed by: arithefirst
GPG Key ID: 4508A15C4DB91C5B
4 changed files with 23 additions and 4 deletions

View File

@ -3,6 +3,11 @@ import { username } from 'better-auth/plugins';
import Database from 'better-sqlite3'; import Database from 'better-sqlite3';
export const auth = betterAuth({ export const auth = betterAuth({
user: {
deleteUser: {
enabled: true,
},
},
database: new Database('./src/lib/server/db/users.db'), database: new Database('./src/lib/server/db/users.db'),
emailAndPassword: { emailAndPassword: {
enabled: true, enabled: true,

View File

@ -37,9 +37,16 @@ export const actions = {
return fail(400, { newuserForm }); return fail(400, { newuserForm });
} }
return message(newuserForm, 'Password updated.'); return message(newuserForm, 'Username updated.');
}, },
updateProfilePhoto: async () => {}, updateProfilePhoto: async () => {},
deleteAccount: async () => {}, deleteAccount: async ({ request }) => {
auth.api.deleteUser({
headers: request.headers,
body: {},
});
redirect(303, '/goodbye');
},
signOut: async () => {}, signOut: async () => {},
} satisfies Actions; } satisfies Actions;

View File

@ -1,5 +1,4 @@
<script lang="ts"> <script lang="ts">
import { Input } from '$lib/components/ui/input/index';
import { Button } from '$lib/components/ui/button/index'; import { Button } from '$lib/components/ui/button/index';
import * as Dialog from '$lib/components/ui/dialog'; import * as Dialog from '$lib/components/ui/dialog';
@ -37,7 +36,7 @@
<Dialog.Title>Are you sure absolutely sure?</Dialog.Title> <Dialog.Title>Are you sure absolutely sure?</Dialog.Title>
<Dialog.Description> <Dialog.Description>
This action cannot be undone. This will permanently delete your account and remove your data from our database. This action cannot be undone. This will permanently delete your account and remove your data from our database.
<form class="mt-2 flex gap-2"> <form class="mt-2 flex gap-2" method="POST" action="?/deleteAccount">
<Button class="w-1/2" onclick={() => (open = !open)}>I changed my mind!</Button> <Button class="w-1/2" onclick={() => (open = !open)}>I changed my mind!</Button>
<Button variant="destructive" class="w-1/2" type="submit">Delete Account</Button> <Button variant="destructive" class="w-1/2" type="submit">Delete Account</Button>
</form> </form>

View File

@ -0,0 +1,8 @@
<main class="abs-center flex w-1/4 flex-col items-center gap-4">
<h1 class="text-7xl font-bold">Goodbye!</h1>
<h3 class="text-center">
We're sorry to see you go, if you enjoyed your time on SVChat, come <a class="font-bold underline" href="https://github.com/arithefirst/sv-chat"
>star us on GitHub</a
>
</h3>
</main>