<?php
namespace App\EventListener;
use Vich\UploaderBundle\Event\Event;
use App\Entity\IdentityVerificationImage;
use App\Services\FileEncryption;
use App\Services\FileEncryptionInterface;
class IdentityVerificationImageUploadListener
{
private FileEncryptionInterface $fileEncryption;
public function __construct(FileEncryptionInterface $fileEncryption)
{
$this->fileEncryption = $fileEncryption;
}
public function onVichUploaderPostUpload(Event $event): void
{
/** @var IdentityVerificationImage $identityVerificationImage */
$identityVerificationImage = $event->getObject();
$mapping = $event->getMapping();
if (!$identityVerificationImage instanceof IdentityVerificationImage) {
return;
}
$uploadedFile = $identityVerificationImage->file;
$fileExtension = strrchr($uploadedFile->getFilename(), '.');
$uniqueFileName = uniqid().($fileExtension ?? '.'.substr($fileExtension, 1)).'.enc';
$this->fileEncryption->encryptFile(
$uploadedFile->getPathname(),
FileEncryption::DEFAULT_KEY,
sprintf('%s/%s', $mapping->getUploadDestination(), $uniqueFileName)
);
$identityVerificationImage->setFilePath($uniqueFileName);
unlink($uploadedFile->getPathname());
}
}