Files
factorio-signal-exporter/web/lib/apiHelpers.ts
Caesar2011 20ed6ee9fb Initial web
2026-05-17 19:55:53 +02:00

26 lines
813 B
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { isAuthorized, unauthorized } from './auth';
type RouteContext = { params: Promise<Record<string, string>> };
type Handler = (req: NextRequest, ctx: RouteContext) => Promise<NextResponse>;
/**
* Wraps a route handler with auth checking and unified error handling.
*
* @example
* export const GET = withAuth(async (req) => {
* const rows = await pool.query('...');
* return NextResponse.json(rows);
* });
*/
export function withAuth(handler: Handler): Handler {
return async (req, ctx) => {
if (!isAuthorized(req)) return unauthorized();
try {
return await handler(req, ctx);
} catch (err) {
console.error(err);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
};
}