Files
website/src/middleware.ts
2025-10-13 21:04:21 +02:00

31 lines
960 B
TypeScript

import { sequence } from 'astro/middleware';
import crypto from 'node:crypto';
import type { MiddlewareHandler } from 'astro';
import { logger } from '@util/log.ts';
const actionInternalServerError: MiddlewareHandler = async (context, next) => {
let response = await next();
if (response.status === 500 && context.url.pathname.startsWith('/_actions/')) {
const json = await response.json();
const errorCode = crypto
.createHash('md5')
.update(Date.now() + context.clientAddress)
.digest('hex');
logger.error(`${errorCode}: ${json.message}`);
json.message = `Interner Fehler. Bitte versuch es erneut oder kontakiere einen Administrator.\nFehler Code: ${errorCode}`;
response = new Response(JSON.stringify(json), {
status: response.status,
headers: response.headers,
statusText: response.statusText
});
}
return response;
};
export const onRequest = sequence(actionInternalServerError);