From 2c823ad6af13bf960f41ff21fd07cb29fa06f9ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr> Date: Wed, 28 Jan 2015 15:55:46 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20createdBy=20&=20createdFrom=20pour?= =?UTF-8?q?=20tracer=20qui=20a=20envoy=C3=A9=20un=20fichier.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controller/UploadController.php | 16 +++++++-- Entity/Repository/UploadedFileRepository.php | 6 ++-- Entity/UploadedFile.php | 38 +++++++++++++++++++- Model/FileManagerInterface.php | 2 +- Model/UploadedFileInterface.php | 14 ++++++++ Resources/config/services.yml | 1 + 6 files changed, 69 insertions(+), 8 deletions(-) diff --git a/Controller/UploadController.php b/Controller/UploadController.php index 8f590835..de23d7b9 100644 --- a/Controller/UploadController.php +++ b/Controller/UploadController.php @@ -24,7 +24,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\RouterInterface; -use Exception; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; /** * @Route("/files", service="irstea_file_upload.upload_controller") @@ -50,14 +50,20 @@ class UploadController extends Controller */ protected $csrfProvider; + /** + * @var TokenStorageInterface + */ + protected $tokenStorage; + /** * */ - public function __construct(FileManagerInterface $fileManager, RouterInterface $router, CsrfProviderInterface $csrfProvider) + public function __construct(FileManagerInterface $fileManager, RouterInterface $router, CsrfProviderInterface $csrfProvider, TokenStorageInterface $tokenStorage) { $this->fileManager = $fileManager; $this->router = $router; $this->csrfProvider = $csrfProvider; + $this->tokenStorage = $tokenStorage; } /** @@ -70,11 +76,15 @@ class UploadController extends Controller try { $data = $request->request->get('file'); + $token = $this->tokenStorage->getToken(); + $file = $this->fileManager->create( $data['name'], $data['size'], $data['type'], - isset($data['lastModified']) ? $data['lastModified'] : null + isset($data['lastModified']) ? $data['lastModified'] : null, + null !== $token ? $token->getUsername() : null, + $request->getClientIp() ); $parameters = ['id' => $file->getId()]; diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php index fd55f6d5..b49e2891 100644 --- a/Entity/Repository/UploadedFileRepository.php +++ b/Entity/Repository/UploadedFileRepository.php @@ -56,16 +56,16 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte $this->eventDispatcher = $eventDispatcher; } - public function create($filename, $size, $mimeType, $lastModified) + public function create($filename, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null) { - $file = new UploadedFile(); + $file = new UploadedFile($createdBy, $createdFrom); $file ->setFilesystem($this->filesystem) ->setDisplayName($filename) ->setMetadata( [ - 'original' => [ + 'client' => [ 'filename' => $filename, 'size' => $size, 'mimeType' => $mimeType, diff --git a/Entity/UploadedFile.php b/Entity/UploadedFile.php index 27dfa2d8..53b083d5 100644 --- a/Entity/UploadedFile.php +++ b/Entity/UploadedFile.php @@ -75,6 +75,18 @@ class UploadedFile implements UploadedFileInterface */ private $createdAt; + /** + * @ORM\Column(type="string", nullable=true) + * @var string + */ + private $createdBy; + + /** + * @ORM\Column(type="string", nullable=true) + * @var string + */ + private $createdFrom; + /** * @ORM\Column(type="json_array", nullable=true) * @var array @@ -100,12 +112,16 @@ class UploadedFile implements UploadedFileInterface /** * + * @param string $createdBy + * @param string $createdFrom */ - public function __construct() + public function __construct($createdBy = null, $createdFrom = null) { $this->id = Uuid::uuid4()->toString(); $this->path = "orphan/".$this->id; $this->createdAt = new DateTime('now'); + $this->createdBy = $createdBy; + $this->createdFrom = $createdFrom; } /** @@ -589,6 +605,26 @@ class UploadedFile implements UploadedFileInterface ]; } + /** + * Get createdBy + * + * @return string + */ + public function getCreatedBy() + { + return $this->createdBy; + } + + /** + * Get createdFrom + * + * @return string + */ + public function getCreatedFrom() + { + return $this->createdFrom; + } + public function getLocalPath() { if(null !== $this->localTempPath) { diff --git a/Model/FileManagerInterface.php b/Model/FileManagerInterface.php index bba54a89..84a4b524 100644 --- a/Model/FileManagerInterface.php +++ b/Model/FileManagerInterface.php @@ -26,7 +26,7 @@ interface FileManagerInterface * @param int $lastModified * @return UploadedFileInterface */ - public function create($name, $size, $mimeType, $lastModified); + public function create($name, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null); /** * @param UploadedFileInterface $file diff --git a/Model/UploadedFileInterface.php b/Model/UploadedFileInterface.php index 7b46d603..6bc26189 100644 --- a/Model/UploadedFileInterface.php +++ b/Model/UploadedFileInterface.php @@ -144,6 +144,20 @@ interface UploadedFileInterface */ public function getCreatedAt(); + /** + * Get createdBy + * + * @return string + */ + public function getCreatedBy(); + + /** + * Get createdFrom + * + * @return string + */ + public function getCreatedFrom(); + /** * Set metadata * diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 38b58f0b..fcd95e88 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -31,6 +31,7 @@ services: - @irstea_file_upload.file_manager - @router - @form.csrf_provider + - @security.token_storage # Type de champ irstea_file_upload.field_type: -- GitLab