fix(uploads): tighten guest max-file-size setting (codex review of #823)
Three follow-ups from the Codex review of #823: 1. PublicSettings TypeScript interface was missing general_max_file_size_mb, so UserPhotoUpload's access produced TS2339 under `tsc -b` (build:check). CI didn't catch it because the pipeline runs `build` (esbuild, no typecheck), but it's a real type gap — the #614 count field is declared, this one wasn't. Added the optional numeric field. 2. The general-settings update endpoint validated general_max_files_per_upload but not general_max_file_size_mb, so an out-of-range value (0, -1, huge) could persist. publicSettings then advertised the raw value while getMaxFileSizeMb() normalised it — the guest UI would reject files the backend accepts. Added the same validate-and-clamp block (1..MAX_ALLOWED_FILE_SIZE_MB). 3. The update route cleared the file-count cache but not the new file-size cache, so for up to 60s the public endpoint could advertise a new limit while multer still enforced the old one. Now clears both under the same uploadLimitTouched guard. Follow-up on the merged #823 (main-only), so this targets main only.
This commit is contained in:
@@ -82,6 +82,9 @@ export interface PublicSettings {
|
||||
// modal can render the real number in `upload.fileRequirements` and refuse
|
||||
// oversized batches client-side. Backend enforces the same value too.
|
||||
general_max_files_per_upload?: number;
|
||||
// #613 follow-up — per-file size limit (MB), surfaced so the guest upload
|
||||
// modal shows the real limit and guards client-side. Backend enforces it too.
|
||||
general_max_file_size_mb?: number;
|
||||
// Event field requirements
|
||||
event_require_customer_name?: boolean;
|
||||
event_require_customer_email?: boolean;
|
||||
|
||||
Reference in New Issue
Block a user