Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions Controller/MediaController.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@

namespace PaneeDesign\StorageBundle\Controller;

use Gaufrette\Extras\Resolvable\Resolver\AwsS3PresignedUrlResolver;
use Gaufrette\Extras\Resolvable\Resolver\AwsS3PublicUrlResolver;
use Gaufrette\Extras\Resolvable\ResolverInterface;
use Gaufrette\Extras\Resolvable\UnresolvableObjectException;
use Liip\ImagineBundle\Exception\Binary\Loader\NotLoadableException;
use Liip\ImagineBundle\Exception\Imagine\Filter\NonExistingFilterException;
Expand Down Expand Up @@ -42,14 +45,21 @@ class MediaController extends AbstractController
*/
protected $filterService;

/**
* @var ResolverInterface
*/
protected $resolver;

public function __construct(
MediaHandler $uploader,
MediaRepository $repository,
FilterService $filterService
FilterService $filterService,
ResolverInterface $resolver
) {
$this->uploader = $uploader;
$this->repository = $repository;
$this->filterService = $filterService;
$this->resolver = $resolver;
}

/**
Expand Down Expand Up @@ -210,13 +220,14 @@ protected function getMediaByKeyAndType(string $key, string $type)
throw new StorageException('File type not handled', 'INVALID_MEDIA_TYPE');
}

if (!$media->getIsPublic() && !$this->getUser()) {
throw new AccessDeniedHttpException('Forbidden');
}

if ($this->uploader->isInstanceOfAmazonS3()) {
$resolver = $this->container->get('ped_storage.amazon_presigned_url_resolver');
$this->uploader->setAwsS3Resolver($resolver);
$this->uploader->setAwsS3Resolver($this->resolver);

if ($this->resolver instanceof AwsS3PublicUrlResolver) {
if (!$media->getIsPublic() && !$this->getUser()) {
throw new AccessDeniedHttpException('Forbidden');
}
}
}

$url = $this->uploader->getFullUrl($media->getFullKey());
Expand Down
1 change: 1 addition & 0 deletions Resources/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ services:
$uploader: '@ped_storage.uploader'
$repository: '@repository.media'
$filterService: '@liip_imagine.service.filter'
$resolver: '@ped_storage.amazon_presigned_url_resolver'