Files
backerup-website/frontend/app/api/admin/links/route.ts
T
Anders Böttcher 984b282a95 feat: add admin links management and updaterup page
- Implemented AdminLinksPage for managing link entries with admin role check.
- Created API routes for fetching, updating, and deleting link entries.
- Added ProductTabs component for navigation between Backerup and Updaterup.
- Developed UpdaterupPage with detailed features, setup instructions, and statistics.
- Introduced links database functionality for runtime-editable link overrides.
2026-05-13 10:53:21 +02:00

41 lines
1.2 KiB
TypeScript

import { NextResponse } from 'next/server'
import { getSession } from '@/lib/session'
import { getAllLinkEntries, setLink, type LinkKey } from '@/lib/links-db'
import { LINKS } from '@/lib/links'
export async function GET() {
const session = await getSession()
if (!session || session.role !== 'admin') {
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
}
const entries = await getAllLinkEntries()
return NextResponse.json(entries)
}
export async function PUT(request: Request) {
const session = await getSession()
if (!session || session.role !== 'admin') {
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
}
let body: { key?: string; value?: string }
try {
body = (await request.json()) as { key?: string; value?: string }
} catch {
return NextResponse.json({ error: 'Invalid JSON' }, { status: 400 })
}
const key = String(body.key ?? '').trim() as LinkKey
const value = String(body.value ?? '').trim()
if (!key || !(key in LINKS)) {
return NextResponse.json({ error: 'Unknown link key' }, { status: 400 })
}
if (!value) {
return NextResponse.json({ error: 'Value cannot be empty' }, { status: 400 })
}
await setLink(key, value)
return NextResponse.json({ ok: true })
}