Files
crumbs-original/src/routes/api/auth/setup/+server.ts
T
Frederic CabassutandClaude Opus 4.6 54ec5b9833 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

38 lines
1.0 KiB
TypeScript

import { json, error } from '@sveltejs/kit';
import type { RequestHandler } from './$types.js';
import { setupUser, createSession, isSetupComplete } from '$lib/server/auth.js';
export const POST: RequestHandler = async ({ request, cookies, getClientAddress }) => {
const alreadySetup = await isSetupComplete();
if (alreadySetup) {
throw error(400, 'Setup already completed');
}
const { email, displayName, password } = await request.json();
if (!email) {
throw error(400, 'Email is required');
}
if (!password || password.length < 8) {
throw error(400, 'Password must be at least 8 characters');
}
const user = await setupUser(email, password, displayName);
if (!user) {
throw error(500, 'Failed to create user');
}
const userAgent = request.headers.get('user-agent') || undefined;
const ip = getClientAddress();
const token = await createSession(user.id, { userAgent, ip });
cookies.set('session', token, {
path: '/',
httpOnly: true,
sameSite: 'lax',
maxAge: 30 * 24 * 60 * 60
});
return json({ success: true }, { status: 201 });
};