From 5b3bd6545a46a7536f2767ea3e2e99476dcef9f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sat, 23 Jan 2016 01:20:41 +0100 Subject: [PATCH] add a role for stats, apply role on export --- DependencyInjection/ChillPersonExtension.php | 4 +++- Export/Export/CountPerson.php | 7 +++++++ Security/Authorization/PersonVoter.php | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/DependencyInjection/ChillPersonExtension.php b/DependencyInjection/ChillPersonExtension.php index 589e2c14e..cc3c593be 100644 --- a/DependencyInjection/ChillPersonExtension.php +++ b/DependencyInjection/ChillPersonExtension.php @@ -8,6 +8,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\DependencyInjection\Loader; use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Chill\MainBundle\DependencyInjection\MissingBundleException; +use Chill\PersonBundle\Security\Authorization\PersonVoter; /** * This is the class that loads and manages your bundle configuration @@ -84,7 +85,8 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac $container->prependExtensionConfig('security', array( 'role_hierarchy' => array( 'CHILL_PERSON_UPDATE' => array('CHILL_PERSON_SEE'), - 'CHILL_PERSON_CREATE' => array('CHILL_PERSON_SEE') + 'CHILL_PERSON_CREATE' => array('CHILL_PERSON_SEE'), + 'CHILL_PERSON_SEE' => array(PersonVoter::STATS) ) )); } diff --git a/Export/Export/CountPerson.php b/Export/Export/CountPerson.php index e4185ba9f..6078d7ea8 100644 --- a/Export/Export/CountPerson.php +++ b/Export/Export/CountPerson.php @@ -23,6 +23,8 @@ use Chill\MainBundle\Export\ExportInterface; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Form\FormBuilderInterface; use Doctrine\ORM\Query; +use Chill\PersonBundle\Security\Authorization\PersonVoter; +use Symfony\Component\Security\Core\Role\Role; /** * @@ -49,6 +51,11 @@ class CountPerson implements ExportInterface return "Count persons"; } + public function requiredRole() + { + return new Role(PersonVoter::STATS); + } + /** * Initiate the query * diff --git a/Security/Authorization/PersonVoter.php b/Security/Authorization/PersonVoter.php index d795c39cf..1f1116abe 100644 --- a/Security/Authorization/PersonVoter.php +++ b/Security/Authorization/PersonVoter.php @@ -34,6 +34,7 @@ class PersonVoter extends AbstractChillVoter implements ProvideRoleInterface const CREATE = 'CHILL_PERSON_CREATE'; const UPDATE = 'CHILL_PERSON_UPDATE'; const SEE = 'CHILL_PERSON_SEE'; + const STATS = 'CHILL_PERSON_STATS'; /** *