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, '/');
+}