play/src/routes/api/profile/+server.ts

36 lines
1.1 KiB
TypeScript

import { json, type RequestHandler } from '@sveltejs/kit';
import { getSessionUser, SESSION_COOKIE, upsertUser } from '$lib/server/auth';
export const GET: RequestHandler = async ({ cookies }) => {
const user = getSessionUser(cookies.get(SESSION_COOKIE));
return json({ user });
};
export const PUT: RequestHandler = async ({ cookies, request }) => {
const user = getSessionUser(cookies.get(SESSION_COOKIE));
if (!user) return json({ error: 'authentication required' }, { status: 401 });
let payload: { display_name?: string };
try {
payload = await request.json();
} catch {
return json({ error: 'invalid json' }, { status: 400 });
}
const newName = (payload.display_name ?? '').toString().trim();
if (newName.length > 80) {
return json({ error: 'display_name must be ≤80 chars' }, { status: 400 });
}
upsertUser({
id: user.id,
username: user.username,
global_name: user.global_name,
avatar: user.avatar,
email: user.email,
display_name: newName || null
} as any);
return json({ user: { ...user, display_name: newName || null } });
};