Severity: CRITICAL
Location: lib/Controller/PublicShareController.php:264-301, lib/Service/CaseSharingService.php:501-520
Description:
PublicShareController::uploadDocument returns {success: true, ...metadata} to the citizen's browser, but CaseSharingService::storeExternalDocument is a stub: it only logs the incoming metadata and returns the constructed metadata array. The PHP temporary file ($_FILES['file']['tmp_name']) is destroyed when the request ends. No data is written to Nextcloud Files, nor is any file attachment created in OpenRegister.
For BABS (Burgemeester en Aldershandschriften) and general case-evidence submissions this is a legally-relevant data-loss bug: citizens receive confirmation that their document was received, but the document is never accessible to medewerkers.
This is distinct from a latent feature — the endpoint is exposed in the UI as a working upload mechanism and the response explicitly claims success.
Scenario:
- Citizen receives a public share link for their case and uploads a document (e.g., a bezwaarschrift attachment).
- UI shows "Document succesvol geüpload".
- Medewerker opens the case — the document is not there.
- Deadline for processing the document passes; legal consequences for the municipality.
Suggested fix:
Until proper persistence is implemented, return HTTP 501 Not Implemented so the UI can show an accurate error message.
For proper implementation:
- Move the uploaded file to a Nextcloud Files location (e.g.,
userFolder/Cases/{caseId}/external-uploads/).
- Create an OR file-attachment record linking the file to the case object.
- Only then return
{success: true}.
Source: deep team-reviewer pass 2026-05-27
Severity: CRITICAL
Location:
lib/Controller/PublicShareController.php:264-301,lib/Service/CaseSharingService.php:501-520Description:
PublicShareController::uploadDocumentreturns{success: true, ...metadata}to the citizen's browser, butCaseSharingService::storeExternalDocumentis a stub: it only logs the incoming metadata and returns the constructed metadata array. The PHP temporary file ($_FILES['file']['tmp_name']) is destroyed when the request ends. No data is written to Nextcloud Files, nor is any file attachment created in OpenRegister.For BABS (Burgemeester en Aldershandschriften) and general case-evidence submissions this is a legally-relevant data-loss bug: citizens receive confirmation that their document was received, but the document is never accessible to medewerkers.
This is distinct from a latent feature — the endpoint is exposed in the UI as a working upload mechanism and the response explicitly claims success.
Scenario:
Suggested fix:
Until proper persistence is implemented, return HTTP 501 Not Implemented so the UI can show an accurate error message.
For proper implementation:
userFolder/Cases/{caseId}/external-uploads/).{success: true}.Source: deep team-reviewer pass 2026-05-27