- Fix header nav overflow by switching to lg: breakpoint with tighter gaps - Fix file upload path traversal by whitelisting allowed folders and extensions - Fix BookingModal using hardcoded content instead of DB-backed data - Add input length validation on public master-class registration API - Add ID validation on team member and reorder API routes - Fix BookingModal useCallback missing groupInfo/contact dependencies - Improve admin news date field to use native date picker - Add missing Мастер-классы and Новости cards to admin dashboard Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { getTeamMember, updateTeamMember, deleteTeamMember } from "@/lib/db";
|
|
import { revalidatePath } from "next/cache";
|
|
|
|
type Params = { params: Promise<{ id: string }> };
|
|
|
|
function parseId(raw: string): number | null {
|
|
const n = Number(raw);
|
|
return Number.isInteger(n) && n > 0 ? n : null;
|
|
}
|
|
|
|
export async function GET(_request: NextRequest, { params }: Params) {
|
|
const { id } = await params;
|
|
const numId = parseId(id);
|
|
if (!numId) {
|
|
return NextResponse.json({ error: "Invalid ID" }, { status: 400 });
|
|
}
|
|
const member = getTeamMember(numId);
|
|
if (!member) {
|
|
return NextResponse.json({ error: "Not found" }, { status: 404 });
|
|
}
|
|
return NextResponse.json(member);
|
|
}
|
|
|
|
export async function PUT(request: NextRequest, { params }: Params) {
|
|
const { id } = await params;
|
|
const numId = parseId(id);
|
|
if (!numId) {
|
|
return NextResponse.json({ error: "Invalid ID" }, { status: 400 });
|
|
}
|
|
const data = await request.json();
|
|
updateTeamMember(numId, data);
|
|
revalidatePath("/");
|
|
return NextResponse.json({ ok: true });
|
|
}
|
|
|
|
export async function DELETE(_request: NextRequest, { params }: Params) {
|
|
const { id } = await params;
|
|
const numId = parseId(id);
|
|
if (!numId) {
|
|
return NextResponse.json({ error: "Invalid ID" }, { status: 400 });
|
|
}
|
|
deleteTeamMember(numId);
|
|
revalidatePath("/");
|
|
return NextResponse.json({ ok: true });
|
|
}
|