Add propper access control for snips with public option

This commit is contained in:
Tim
2023-04-05 00:02:47 +02:00
parent 607435bff0
commit 693f83ca4a
8 changed files with 117 additions and 4 deletions

View File

@ -5,6 +5,7 @@ namespace App\Controller;
use App\Entity\Snip;
use App\Form\SnipType;
use App\Repository\SnipRepository;
use App\Security\Voter\SnipVoter;
use App\Service\SnipServiceFactory;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
@ -33,6 +34,8 @@ class SnipController extends AbstractController
#[Route('/single/{snip}', name: '_single')]
public function single(Snip $snip): Response
{
$this->denyAccessUnlessGranted(SnipVoter::VIEW, $snip);
return $this->render('snip/single.html.twig', [
'snip' => $snip,
'content' => $this->snipServiceFactory->create($snip)->get(),
@ -42,6 +45,8 @@ class SnipController extends AbstractController
#[Route('/raw/{snip}', name: '_raw')]
public function raw(Snip $snip, Request $request): Response
{
$this->denyAccessUnlessGranted(SnipVoter::VIEW, $snip);
$response = new Response(
$this->snipServiceFactory->create($snip)->get(),
Response::HTTP_OK,
@ -67,6 +72,8 @@ class SnipController extends AbstractController
#[Route('/edit/{snip}', name: '_edit')]
public function edit(Snip $snip, Request $request): Response
{
$this->denyAccessUnlessGranted(SnipVoter::EDIT, $snip);
$form = $this->createForm(SnipType::class, $snip);
$form->add('Save', SubmitType::class);
if ($snip->getId()) {