Vincent GUFFON 4 роки тому
батько
коміт
8981ba1817

+ 8 - 2
config/services.yaml

@@ -37,7 +37,7 @@ services:
         App\Service\Access\OptionalsRolesInterface:
             tags: ['app.optionalsroles']
 
-    App\Doctrine\Access\HandleAccessExtension:
+    App\Doctrine\Access\HandleCurrentAccessExtension:
         - !tagged_iterator app.extensions.access
     App\Service\Access\HandleOptionalsRoles:
         - !tagged_iterator app.optionalsroles
@@ -47,4 +47,10 @@ services:
     App\Serializer\AccessContextBuilder:
         decorates: 'api_platform.serializer.context_builder'
         arguments: [ '@App\Serializer\AccessContextBuilder.inner' ]
-        autoconfigure: false
+        autoconfigure: false
+
+    #########################################
+    ##  LISTENER ##
+    App\EventListener\DoctrineFilter\DoctrineFilterListener:
+        tags:
+            - { name: kernel.event_listener, event: kernel.request }

+ 11 - 7
src/Doctrine/Access/AccessExtension.php → src/Doctrine/Access/CurrentAccessExtension.php

@@ -11,12 +11,15 @@ use Doctrine\ORM\QueryBuilder;
 use Symfony\Component\Security\Core\Security;
 
 /**
- * Class AccessExtension : Filtre de sécurité par défaut pour une resource Access
+ * Class CurrentAccessExtension : Filtre de sécurité par défaut pour une resource Access
  * @package App\Doctrine\Access
  */
-final class AccessExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentAccessExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
-    public function __construct(private Security $security, private HandleAccessExtension $handleAccessExtension)
+    public function __construct(
+        private Security $security,
+        private HandleCurrentAccessExtension $handleCurrentAccessExtension
+    )
     { }
 
     public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void
@@ -34,13 +37,14 @@ final class AccessExtension implements QueryCollectionExtensionInterface, QueryI
         if (Access::class !== $resourceClass) {
             return;
         }
-
         /** @var Access $currentUser */
         $currentUser = $this->security->getUser();
         $rootAlias = $queryBuilder->getRootAliases()[0];
-        $queryBuilder->andWhere(sprintf('%s.organization = :current_organization', $rootAlias));
-        $queryBuilder->setParameter('current_organization', $currentUser->getOrganization());
+        $queryBuilder
+            ->andWhere(sprintf('%s.organization = :current_organization', $rootAlias))
+            ->setParameter('current_organization', $currentUser->getOrganization())
+        ;
 
-        $this->handleAccessExtension->addWhere($queryBuilder, $operationName);
+        $this->handleCurrentAccessExtension->addWhere($queryBuilder, $operationName);
     }
 }

+ 2 - 2
src/Doctrine/Access/PersonalizedListExtension.php → src/Doctrine/Access/CurrentUserPersonalizedListExtension.php

@@ -11,10 +11,10 @@ use Doctrine\ORM\QueryBuilder;
 use Symfony\Component\Security\Core\Security;
 
 /**
- * Class PersonalizedListExtension : Filtre de sécurité par défaut pour une resource PersonalizedList
+ * Class CurrentUserPersonalizedListExtension : Filtre de sécurité par défaut pour une resource PersonalizedList
  * @package App\Doctrine\Access
  */
-final class PersonalizedListExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentUserPersonalizedListExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }

+ 3 - 2
src/Doctrine/Access/Extensions/AdminExtension.php

@@ -15,7 +15,8 @@ class AdminExtension implements AccessExtensionInterface {
     public function addWhere(QueryBuilder $queryBuilder)
     {
         $rootAlias = $queryBuilder->getRootAliases()[0];
-        $queryBuilder->andWhere(sprintf('%s.adminAccess = :adminAccess', $rootAlias));
-        $queryBuilder->setParameter('adminAccess', true);
+        $queryBuilder
+            ->andWhere(sprintf('%s.adminAccess = :adminAccess', $rootAlias))
+            ->setParameter('adminAccess', true);
     }
 }

+ 1 - 1
src/Doctrine/Access/HandleAccessExtension.php → src/Doctrine/Access/HandleCurrentAccessExtension.php

@@ -5,7 +5,7 @@ namespace App\Doctrine\Access;
 
 use Doctrine\ORM\QueryBuilder;
 
-class HandleAccessExtension{
+class HandleCurrentAccessExtension{
     public function __construct(private iterable $extensions)
     { }
 

+ 2 - 2
src/Doctrine/Core/AddressPostalExtension.php → src/Doctrine/Core/AllowedAddressPostalExtension.php

@@ -12,10 +12,10 @@ use Doctrine\ORM\QueryBuilder;
 use Symfony\Component\Security\Core\Security;
 
 /**
- * Class AddressPostalExtension : Filtre de sécurité par défaut pour une resource AddressPostal
+ * Class AllowedAddressPostalExtension : Filtre de sécurité par défaut pour une resource AddressPostal
  * @package App\Doctrine\Core
  */
-final class AddressPostalExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class AllowedAddressPostalExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }

+ 1 - 1
src/Doctrine/Core/NotificationUserExtension.php → src/Doctrine/Core/CurrentNotificationUserExtension.php

@@ -15,7 +15,7 @@ use Symfony\Component\Security\Core\Security;
  * Class NotificationExtension : Filtre de sécurité par défaut pour une resource Notification
  * @package App\Doctrine\Core
  */
-final class NotificationUserExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentNotificationUserExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }

+ 1 - 1
src/Doctrine/Core/NotificationExtension.php → src/Doctrine/Core/CurrentUserNotificationExtension.php

@@ -15,7 +15,7 @@ use Symfony\Component\Security\Core\Security;
  * Class NotificationExtension : Filtre de sécurité par défaut pour une resource Notification
  * @package App\Doctrine\Core
  */
-final class NotificationExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentUserNotificationExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }

+ 1 - 1
src/Doctrine/Organization/OrganizationAddressPostalExtension.php → src/Doctrine/Organization/CurrentOrganizationAddressPostalExtension.php

@@ -15,7 +15,7 @@ use Symfony\Component\Security\Core\Security;
  * Class OrganizationAddressPosteExtension : Filtre de sécurité par défaut pour une resource OrganizationAddressPostal
  * @package App\Doctrine\Core
  */
-final class OrganizationAddressPostalExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentOrganizationAddressPostalExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }

+ 2 - 2
src/Doctrine/Organization/OrganizationExtension.php → src/Doctrine/Organization/CurrentOrganizationExtension.php

@@ -12,10 +12,10 @@ use Doctrine\ORM\QueryBuilder;
 use Symfony\Component\Security\Core\Security;
 
 /**
- * Class OrganizationExtension : Filtre de sécurité par défaut pour une resource Organization
+ * Class CurrentOrganizationExtension : Filtre de sécurité par défaut pour une resource Organization
  * @package App\Doctrine\Core
  */
-final class OrganizationExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
+final class CurrentOrganizationExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
 {
     public function __construct(private Security $security)
     { }