diff --git a/src/lib/components/DropdownButton.svelte b/src/lib/components/DropdownButton.svelte index cb749f6..41d340c 100644 --- a/src/lib/components/DropdownButton.svelte +++ b/src/lib/components/DropdownButton.svelte @@ -1,3 +1,7 @@ -
+ + + -
+ diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 6c8f2b4..837045c 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -1,25 +1,21 @@
-
-

+

+

File Uploader

-
+
Dashboard
-
+

Uploads

@@ -27,7 +23,7 @@

Settings

- +

Logout

diff --git a/src/lib/server/database.js b/src/lib/server/database.js index 3e49d37..aa80fbf 100644 --- a/src/lib/server/database.js +++ b/src/lib/server/database.js @@ -61,3 +61,11 @@ export async function getSession(id) { return session; } + +export async function deleteSession(id) { + if (!id) return false; + + return await prisma.session.delete({ + where: { id } + }); +} diff --git a/src/routes/api/auth/login/+server.js b/src/routes/api/auth/login/+server.js index 05a77a5..aaf2a15 100644 --- a/src/routes/api/auth/login/+server.js +++ b/src/routes/api/auth/login/+server.js @@ -6,7 +6,7 @@ import { verifyHash } from '$lib/server/crypto'; /** @type {import('./$types').RequestHandler} */ export async function POST(event) { - const { request, cookies, locals } = event; + const { request, cookies } = event; const body = await request.json(); if (!body?.email || !email(body?.email)) diff --git a/src/routes/api/auth/logout/+server.js b/src/routes/api/auth/logout/+server.js new file mode 100644 index 0000000..01dbad2 --- /dev/null +++ b/src/routes/api/auth/logout/+server.js @@ -0,0 +1,17 @@ +import { redirect } from '@sveltejs/kit'; +import { getSession, deleteSession } from '$lib/server/database'; +import { COOKIE } from '$lib/config'; + +/** @type {import('./$types').RequestHandler} */ +export async function GET({ cookies }) { + const session = await getSession(cookies.get(COOKIE)); + if (!session) { + cookies.delete(COOKIE, { path: '/' }); + return redirect(302, '/'); + } + + await deleteSession(session.id); + cookies.delete(COOKIE, { path: '/' }); + + redirect(302, '/'); +}