fix: unlink fichiers temporaires apres flush dans webhook EFlex DocuSeal

Le @unlink() etait appele avant $em->flush(), Vich essayait de lire
un fichier deja supprime. Les fichiers temporaires sont maintenant
supprimes apres le flush.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-09 07:48:03 +02:00
parent a41f081696
commit 8e7a114c22

View File

@@ -270,10 +270,14 @@ class WebhookDocuSealController extends AbstractController
} }
// Telecharger le PDF signe et l'audit // Telecharger le PDF signe et l'audit
$this->downloadEFlexSignedDocuments($data, $eflex, $projectDir); $tmpFiles = $this->downloadEFlexSignedDocuments($data, $eflex, $projectDir);
$eflex->setState(\App\Entity\EFlex::STATE_PENDING_SETUP); $eflex->setState(\App\Entity\EFlex::STATE_PENDING_SETUP);
$em->flush(); $em->flush();
foreach ($tmpFiles as $f) {
@unlink($f);
}
// Preparer Stripe Customer // Preparer Stripe Customer
$customer = $eflex->getCustomer(); $customer = $eflex->getCustomer();
if ('' !== $stripeSk) { if ('' !== $stripeSk) {
@@ -363,8 +367,13 @@ class WebhookDocuSealController extends AbstractController
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): void /**
* @return list<string> fichiers temporaires a supprimer apres flush
*/
private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): array
{ {
$tmpFiles = [];
$documents = $data['documents'] ?? []; $documents = $data['documents'] ?? [];
$pdfUrl = $documents[0]['url'] ?? null; $pdfUrl = $documents[0]['url'] ?? null;
if (null !== $pdfUrl) { if (null !== $pdfUrl) {
@@ -373,7 +382,7 @@ class WebhookDocuSealController extends AbstractController
$tmpSigned = tempnam(sys_get_temp_dir(), 'eflex_signed_').'.pdf'; $tmpSigned = tempnam(sys_get_temp_dir(), 'eflex_signed_').'.pdf';
file_put_contents($tmpSigned, $content); file_put_contents($tmpSigned, $content);
$eflex->setPdfSignedFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpSigned, 'eflex-signe-'.$eflex->getReference().'.pdf', 'application/pdf', null, true)); $eflex->setPdfSignedFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpSigned, 'eflex-signe-'.$eflex->getReference().'.pdf', 'application/pdf', null, true));
@unlink($tmpSigned); $tmpFiles[] = $tmpSigned;
} }
} }
@@ -384,9 +393,11 @@ class WebhookDocuSealController extends AbstractController
$tmpAudit = tempnam(sys_get_temp_dir(), 'eflex_audit_').'.pdf'; $tmpAudit = tempnam(sys_get_temp_dir(), 'eflex_audit_').'.pdf';
file_put_contents($tmpAudit, $auditContent); file_put_contents($tmpAudit, $auditContent);
$eflex->setPdfAuditFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpAudit, 'audit-'.$eflex->getReference().'.pdf', 'application/pdf', null, true)); $eflex->setPdfAuditFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpAudit, 'audit-'.$eflex->getReference().'.pdf', 'application/pdf', null, true));
@unlink($tmpAudit); $tmpFiles[] = $tmpAudit;
} }
} }
return $tmpFiles;
} }
/** /**