src/EventListener/IdentityVerificationImageUploadListener.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Vich\UploaderBundle\Event\Event;
  4. use App\Entity\IdentityVerificationImage;
  5. use App\Services\FileEncryption;
  6. use App\Services\FileEncryptionInterface;
  7. class IdentityVerificationImageUploadListener
  8. {
  9.     private FileEncryptionInterface $fileEncryption;
  10.     public function __construct(FileEncryptionInterface $fileEncryption)
  11.     {
  12.         $this->fileEncryption $fileEncryption;
  13.     }
  14.     public function onVichUploaderPostUpload(Event $event): void
  15.     {
  16.         /** @var IdentityVerificationImage $identityVerificationImage */
  17.         $identityVerificationImage $event->getObject();
  18.         $mapping $event->getMapping();
  19.         if (!$identityVerificationImage instanceof IdentityVerificationImage) {
  20.             return;
  21.         }
  22.         $uploadedFile $identityVerificationImage->file;
  23.         $fileExtension strrchr($uploadedFile->getFilename(), '.');
  24.         $uniqueFileName uniqid().($fileExtension ?? '.'.substr($fileExtension1)).'.enc';
  25.         $this->fileEncryption->encryptFile(
  26.             $uploadedFile->getPathname(),
  27.             FileEncryption::DEFAULT_KEY,
  28.             sprintf('%s/%s'$mapping->getUploadDestination(), $uniqueFileName)
  29.         );
  30.         $identityVerificationImage->setFilePath($uniqueFileName);
  31.         unlink($uploadedFile->getPathname());
  32.     }
  33. }