diff --git a/src/CoreBundle/DataProvider/Extension/CDocumentExtension.php b/src/CoreBundle/DataProvider/Extension/CDocumentExtension.php index 909202c3f8..e8b2e7ec4f 100644 --- a/src/CoreBundle/DataProvider/Extension/CDocumentExtension.php +++ b/src/CoreBundle/DataProvider/Extension/CDocumentExtension.php @@ -25,7 +25,6 @@ final class CDocumentExtension implements QueryCollectionExtensionInterface //, public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void { - error_log('applyToCollection'); $this->addWhere($queryBuilder, $resourceClass); } @@ -37,7 +36,6 @@ final class CDocumentExtension implements QueryCollectionExtensionInterface //, private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void { - error_log('addWhere'); if (CDocument::class !== $resourceClass || $this->security->isGranted('ROLE_ADMIN') || null === $user = $this->security->getUser() @@ -45,6 +43,7 @@ final class CDocumentExtension implements QueryCollectionExtensionInterface //, return; } + error_log('addWhere'); error_log('here!'); $rootAlias = $queryBuilder->getRootAliases()[0]; diff --git a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php index 236864c817..0f62b09591 100644 --- a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php +++ b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php @@ -25,7 +25,6 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void { - error_log('applyToCollection CourseRelUserExtension'); $this->addWhere($queryBuilder, $resourceClass); } @@ -37,7 +36,6 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void { - //error_log('addWhere CourseRelUserExtension'); if (CourseRelUser::class !== $resourceClass) { return; } @@ -48,15 +46,10 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface if (null === $user = $this->security->getUser()) { throw new AccessDeniedException('Access Denied.'); - - return; } $rootAlias = $queryBuilder->getRootAliases()[0]; - $queryBuilder-> - andWhere($rootAlias.'.user = :current_user') - ; - //$queryBuilder->andWhere(sprintf('%s.node.creator = :current_user', $rootAlias)); - $queryBuilder->setParameter('current_user', $user->getId()); + $queryBuilder->andWhere(sprintf('%s.user = :current_user', $rootAlias)); + $queryBuilder->setParameter('current_user', $user); } } diff --git a/src/CoreBundle/DataProvider/Extension/SessionRelUserExtension.php b/src/CoreBundle/DataProvider/Extension/SessionRelUserExtension.php new file mode 100644 index 0000000000..7f43d41a11 --- /dev/null +++ b/src/CoreBundle/DataProvider/Extension/SessionRelUserExtension.php @@ -0,0 +1,55 @@ +security = $security; + } + + public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void + { + $this->addWhere($queryBuilder, $resourceClass); + } + + /*public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = []): void + { + error_log('applyToItem'); + $this->addWhere($queryBuilder, $resourceClass); + }*/ + + private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void + { + if (SessionRelUser::class !== $resourceClass) { + return; + } + + if ($this->security->isGranted('ROLE_ADMIN')) { + return; + } + + if (null === $user = $this->security->getUser()) { + throw new AccessDeniedException('Access Denied.'); + } + + $rootAlias = $queryBuilder->getRootAliases()[0]; + $queryBuilder->andWhere(sprintf('%s.user = :current_user', $rootAlias)); + $queryBuilder->setParameter('current_user', $user); + } +}