diff --git a/src/routes/dash/account/sessions/+page.server.ts b/src/routes/dash/account/sessions/+page.server.ts new file mode 100644 index 0000000..d0ea62e --- /dev/null +++ b/src/routes/dash/account/sessions/+page.server.ts @@ -0,0 +1,21 @@ +import { FORBIDDEN, SUCCESS } from '$lib/server/commonResponses'; +import { deleteSession, getUserSessions } from '$lib/server/sessions'; +import { fail, type Actions, type ServerLoad } from '@sveltejs/kit'; + +export const load: ServerLoad = async ({ locals: { guard } }) => { + const user = guard.requiresAuth().orRedirects().getUser(); + return { + sessions: getUserSessions(user.id), + }; +}; + +export const actions = { + delete: async ({ locals: { guard }, request }) => { + if (guard.requiresAuth().isFailed()) return FORBIDDEN; + + const id = (await request.formData()).get('id'); + + const deleted = deleteSession({ publicId: id?.toString() }); + return deleted ? SUCCESS : fail(404, { error: 'Could not find session.' }); + }, +} satisfies Actions; diff --git a/src/routes/dash/account/sessions/+page.svelte b/src/routes/dash/account/sessions/+page.svelte new file mode 100644 index 0000000..6a8142d --- /dev/null +++ b/src/routes/dash/account/sessions/+page.svelte @@ -0,0 +1,47 @@ + + + + + {#each data.sessions as session} + + User-Agent: {session.userAgent} + IP Address: {session.ip} + + + Don't recognize this? + + + + End session + + + + + + {/each} + + +
User-Agent: {session.userAgent}
IP Address: {session.ip}
Don't recognize this?