Files
crumbs-original/src/routes/api/auth/sessions/+server.ts
T
Frederic CabassutandClaude Opus 4.6 e155251f27 feat(auth): session list and revocation
Track session metadata (createdAt, userAgent, ip, lastUsedAt). Add API
for listing and revoking sessions. Settings page shows active sessions
with "Revoke" per session and "Log out everywhere else" option.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 01:10:37 +01:00

34 lines
990 B
TypeScript

import { json, error } from '@sveltejs/kit';
import type { RequestHandler } from './$types.js';
import { getUserId } from '$lib/server/api-utils.js';
import { listUserSessions, revokeSession, revokeAllSessions } from '$lib/server/auth.js';
export const GET: RequestHandler = async (event) => {
const userId = getUserId(event);
const currentToken = event.cookies.get('session') || '';
const sessions = listUserSessions(userId, currentToken);
return json(sessions);
};
export const DELETE: RequestHandler = async (event) => {
const userId = getUserId(event);
const { sessionId, all } = await event.request.json();
if (all) {
const currentToken = event.cookies.get('session') || '';
revokeAllSessions(userId, currentToken);
return json({ success: true });
}
if (!sessionId) {
throw error(400, 'sessionId is required');
}
const revoked = revokeSession(userId, sessionId);
if (!revoked) {
throw error(404, 'Session not found');
}
return json({ success: true });
};