privacyEvent, add event to index and show Actions

This commit is contained in:
Mat 2018-10-16 10:47:50 +02:00
parent 28d903697c
commit c9fddffd4b
2 changed files with 31 additions and 3 deletions

View File

@ -5,7 +5,9 @@ namespace Chill\DocStoreBundle\Controller;
use Chill\DocStoreBundle\Entity\PersonDocument; use Chill\DocStoreBundle\Entity\PersonDocument;
use Chill\DocStoreBundle\Form\PersonDocumentType; use Chill\DocStoreBundle\Form\PersonDocumentType;
use Chill\DocStoreBundle\Repository\DocumentRepository; use Chill\DocStoreBundle\Repository\DocumentRepository;
use Chill\PersonBundle\Privacy\PrivacyEvent;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
@ -29,9 +31,21 @@ class DocumentPersonController extends Controller
*/ */
protected $translator; protected $translator;
public function __construct(TranslatorInterface $translator) /**
* @var EventDispatcherInterface
*/
protected $eventDispatcher;
/**
* DocumentPersonController constructor.
*
* @param TranslatorInterface $translator
* @param EventDispatcherInterface $eventDispatcher
*/
public function __construct(TranslatorInterface $translator, EventDispatcherInterface $eventDispatcher)
{ {
$this->translator = $translator; $this->translator = $translator;
$this->eventDispatcher = $eventDispatcher;
} }
/** /**
@ -59,6 +73,12 @@ class DocumentPersonController extends Controller
array('date' => 'DESC') array('date' => 'DESC')
); );
$event = new PrivacyEvent($person, array(
'element_class' => PersonDocument::class,
'action' => 'index'
));
$this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event);
return $this->render( return $this->render(
'ChillDocStoreBundle:PersonDocument:index.html.twig', 'ChillDocStoreBundle:PersonDocument:index.html.twig',
[ [
@ -119,7 +139,14 @@ class DocumentPersonController extends Controller
{ {
$this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person); $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
$this->denyAccessUnlessGranted('CHILL_PERSON_DOCUMENT_SEE', $document); $this->denyAccessUnlessGranted('CHILL_PERSON_DOCUMENT_SEE', $document);
$event = new PrivacyEvent($person, array(
'element_class' => PersonDocument::class,
'element_id' => $document->getId(),
'action' => 'show'
));
$this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event);
return $this->render( return $this->render(
'ChillDocStoreBundle:PersonDocument:show.html.twig', 'ChillDocStoreBundle:PersonDocument:show.html.twig',
['document' => $document, 'person' => $person]); ['document' => $document, 'person' => $person]);

View File

@ -5,4 +5,5 @@ services:
Chill\DocStoreBundle\Controller\DocumentPersonController: Chill\DocStoreBundle\Controller\DocumentPersonController:
autowire: true autowire: true
arguments:
$eventDispatcher: '@Symfony\Component\EventDispatcher\EventDispatcherInterface'