Skip to content

Commit 73a0391

Browse files
committed
feat: expose DocMDP data in file validation response
Add DocMDP information to signers array in getFileData(): - docmdp: certification level and compliance status - modifications: detected modification types - modification_validation: validation result details Also improve error handling with structured logging when file content retrieval fails, including fileId and exception context. Makes DocMDP validation results available to frontend for display. Signed-off-by: Vitor Mattos <[email protected]>
1 parent 00548f1 commit 73a0391

1 file changed

Lines changed: 31 additions & 16 deletions

File tree

lib/Service/FileService.php

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,13 @@ private function getFileContent(): string {
277277
try {
278278
return $this->fileContent = $this->getFile()->getContent();
279279
} catch (LibresignException $e) {
280-
throw new LibresignException($e->getMessage(), 404);
281-
} catch (\Throwable) {
282-
throw new LibresignException($this->l10n->t('Invalid data to validate file'), 404);
280+
throw $e;
281+
} catch (\Throwable $e) {
282+
$this->logger->error('Failed to get file content: ' . $e->getMessage(), [
283+
'fileId' => $this->file->getId(),
284+
'exception' => $e,
285+
]);
286+
throw new LibresignException($this->l10n->t('Invalid data to validate file'), 404, $e);
283287
}
284288
}
285289
return '';
@@ -477,19 +481,30 @@ private function loadSignersFromCertData(): void {
477481
$this->fileData->signers[$index]['signingTime'] = $signer['signingTime'];
478482
$this->fileData->signers[$index]['signed'] = $signer['signingTime']->format(DateTimeInterface::ATOM);
479483
}
480-
foreach ($signer['chain'] as $chainIndex => $chainItem) {
481-
$chainArr = $chainItem;
482-
if (isset($chainItem['validFrom_time_t']) && is_numeric($chainItem['validFrom_time_t'])) {
483-
$chainArr['valid_from'] = (new DateTime('@' . $chainItem['validFrom_time_t'], new \DateTimeZone('UTC')))->format(DateTimeInterface::ATOM);
484-
}
485-
if (isset($chainItem['validTo_time_t']) && is_numeric($chainItem['validTo_time_t'])) {
486-
$chainArr['valid_to'] = (new DateTime('@' . $chainItem['validTo_time_t'], new \DateTimeZone('UTC')))->format(DateTimeInterface::ATOM);
487-
}
488-
$chainArr['displayName'] = $chainArr['name'] ?? ($chainArr['subject']['CN'] ?? '');
489-
$this->fileData->signers[$index]['chain'][$chainIndex] = $chainArr;
490-
if ($chainIndex === 0) {
491-
$this->fileData->signers[$index] = array_merge($chainArr, $this->fileData->signers[$index] ?? []);
492-
$this->fileData->signers[$index]['uid'] = $this->resolveUid($chainArr);
484+
if (isset($signer['docmdp'])) {
485+
$this->fileData->signers[$index]['docmdp'] = $signer['docmdp'];
486+
}
487+
if (isset($signer['modifications'])) {
488+
$this->fileData->signers[$index]['modifications'] = $signer['modifications'];
489+
}
490+
if (isset($signer['modification_validation'])) {
491+
$this->fileData->signers[$index]['modification_validation'] = $signer['modification_validation'];
492+
}
493+
if (isset($signer['chain'])) {
494+
foreach ($signer['chain'] as $chainIndex => $chainItem) {
495+
$chainArr = $chainItem;
496+
if (isset($chainItem['validFrom_time_t']) && is_numeric($chainItem['validFrom_time_t'])) {
497+
$chainArr['valid_from'] = (new DateTime('@' . $chainItem['validFrom_time_t'], new \DateTimeZone('UTC')))->format(DateTimeInterface::ATOM);
498+
}
499+
if (isset($chainItem['validTo_time_t']) && is_numeric($chainItem['validTo_time_t'])) {
500+
$chainArr['valid_to'] = (new DateTime('@' . $chainItem['validTo_time_t'], new \DateTimeZone('UTC')))->format(DateTimeInterface::ATOM);
501+
}
502+
$chainArr['displayName'] = $chainArr['name'] ?? ($chainArr['subject']['CN'] ?? '');
503+
$this->fileData->signers[$index]['chain'][$chainIndex] = $chainArr;
504+
if ($chainIndex === 0) {
505+
$this->fileData->signers[$index] = array_merge($chainArr, $this->fileData->signers[$index] ?? []);
506+
$this->fileData->signers[$index]['uid'] = $this->resolveUid($chainArr);
507+
}
493508
}
494509
}
495510
}

0 commit comments

Comments
 (0)