mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
22 lines
894 B
TypeScript
22 lines
894 B
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
|
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
|
import {AuditLogReasonType} from '@fluxer/schema/src/primitives/ChannelValidators';
|
|
import {createMiddleware} from 'hono/factory';
|
|
import type {HonoEnv} from '../types/HonoEnv';
|
|
|
|
export const AuditLogMiddleware = createMiddleware<HonoEnv>(async (ctx, next) => {
|
|
const auditLogReasonHeader = ctx.req.header('X-Audit-Log-Reason');
|
|
if (auditLogReasonHeader) {
|
|
const result = AuditLogReasonType.safeParse(auditLogReasonHeader);
|
|
if (!result.success) {
|
|
throw InputValidationError.fromCode('X-Audit-Log-Reason', ValidationErrorCodes.INVALID_AUDIT_LOG_REASON);
|
|
}
|
|
ctx.set('auditLogReason', result.data);
|
|
} else {
|
|
ctx.set('auditLogReason', null);
|
|
}
|
|
await next();
|
|
});
|