mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Setup AccompanyingPeriodWorkEvaluationStoredObjectVoter.php to use AccompanyingPeriodWorkRepository.php
The voter was not checking the correct permissions to\ establish whether a user can see/edit a storedObject\ The right to see/edit an AccompanyingPeriodWork has to\ be checked.
This commit is contained in:
parent
bab6528ed6
commit
742f2540f6
@ -6,15 +6,15 @@ use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface;
|
|||||||
use Chill\DocStoreBundle\Security\Authorization\StoredObjectRoleEnum;
|
use Chill\DocStoreBundle\Security\Authorization\StoredObjectRoleEnum;
|
||||||
use Chill\DocStoreBundle\Security\Authorization\StoredObjectVoters\AbstractStoredObjectVoter;
|
use Chill\DocStoreBundle\Security\Authorization\StoredObjectVoters\AbstractStoredObjectVoter;
|
||||||
use Chill\DocStoreBundle\Service\WorkflowDocumentService;
|
use Chill\DocStoreBundle\Service\WorkflowDocumentService;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
||||||
use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocumentRepository;
|
use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkRepository;
|
||||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodWorkEvaluationDocumentVoter;
|
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodWorkVoter;
|
||||||
use Symfony\Component\Security\Core\Security;
|
use Symfony\Component\Security\Core\Security;
|
||||||
|
|
||||||
class AccompanyingPeriodWorkEvaluationStoredObjectVoter extends AbstractStoredObjectVoter
|
class AccompanyingPeriodWorkEvaluationStoredObjectVoter extends AbstractStoredObjectVoter
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly AccompanyingPeriodWorkEvaluationDocumentRepository $repository,
|
private readonly AccompanyingPeriodWorkRepository $repository,
|
||||||
Security $security,
|
Security $security,
|
||||||
WorkflowDocumentService $workflowDocumentService
|
WorkflowDocumentService $workflowDocumentService
|
||||||
){
|
){
|
||||||
@ -31,15 +31,14 @@ class AccompanyingPeriodWorkEvaluationStoredObjectVoter extends AbstractStoredOb
|
|||||||
*/
|
*/
|
||||||
protected function getClass(): string
|
protected function getClass(): string
|
||||||
{
|
{
|
||||||
return AccompanyingPeriodWorkEvaluationDocument::class;
|
return AccompanyingPeriodWork::class;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function attributeToRole(StoredObjectRoleEnum $attribute): string
|
protected function attributeToRole(StoredObjectRoleEnum $attribute): string
|
||||||
{
|
{
|
||||||
//Question: there is no update/edit check in AccompanyingPeriodWorkEvaluationDocumentVoter, so for both SEE and EDIT of the
|
|
||||||
// stored object I check with SEE right in AccompanyingPeriodWorkEvaluationDocumentVoter, correct?
|
|
||||||
return match ($attribute) {
|
return match ($attribute) {
|
||||||
StoredObjectRoleEnum::SEE, StoredObjectRoleEnum::EDIT => AccompanyingPeriodWorkEvaluationDocumentVoter::SEE,
|
StoredObjectRoleEnum::SEE => AccompanyingPeriodWorkVoter::SEE,
|
||||||
|
StoredObjectRoleEnum::EDIT => AccompanyingPeriodWorkVoter::UPDATE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ use Doctrine\ORM\EntityManagerInterface;
|
|||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
use Doctrine\Persistence\ObjectRepository;
|
||||||
|
|
||||||
class AccompanyingPeriodWorkEvaluationDocumentRepository implements ObjectRepository, AssociatedEntityToStoredObjectInterface
|
class AccompanyingPeriodWorkEvaluationDocumentRepository implements ObjectRepository
|
||||||
{
|
{
|
||||||
private readonly EntityRepository $repository;
|
private readonly EntityRepository $repository;
|
||||||
|
|
||||||
@ -61,13 +61,4 @@ class AccompanyingPeriodWorkEvaluationDocumentRepository implements ObjectReposi
|
|||||||
return AccompanyingPeriodWorkEvaluationDocument::class;
|
return AccompanyingPeriodWorkEvaluationDocument::class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findAssociatedEntityToStoredObject(StoredObject $storedObject): ?object
|
|
||||||
{
|
|
||||||
$qb = $this->repository->createQueryBuilder('ed');
|
|
||||||
$query = $qb->where('ed.storedObject = :storedObject')
|
|
||||||
->setParameter('storedObject', $storedObject)
|
|
||||||
->getQuery();
|
|
||||||
|
|
||||||
return $query->getResult();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\PersonBundle\Repository\AccompanyingPeriod;
|
namespace Chill\PersonBundle\Repository\AccompanyingPeriod;
|
||||||
|
|
||||||
|
use Chill\DocStoreBundle\Entity\StoredObject;
|
||||||
|
use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface;
|
||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
||||||
@ -22,7 +24,7 @@ use Doctrine\ORM\Query\ResultSetMappingBuilder;
|
|||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
use Doctrine\Persistence\ObjectRepository;
|
||||||
|
|
||||||
final readonly class AccompanyingPeriodWorkRepository implements ObjectRepository
|
final readonly class AccompanyingPeriodWorkRepository implements ObjectRepository, AssociatedEntityToStoredObjectInterface
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private EntityRepository $repository;
|
||||||
|
|
||||||
@ -251,4 +253,17 @@ final readonly class AccompanyingPeriodWorkRepository implements ObjectRepositor
|
|||||||
|
|
||||||
return $qb;
|
return $qb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findAssociatedEntityToStoredObject(StoredObject $storedObject): ?AccompanyingPeriodWork
|
||||||
|
{
|
||||||
|
$qb = $this->repository->createQueryBuilder('acpw');
|
||||||
|
$query = $qb
|
||||||
|
->join('acpw.evaluations', 'acpwe')
|
||||||
|
->join('acpwe.documents', 'acpwed')
|
||||||
|
->where('acpwed.storedObject = :storedObject')
|
||||||
|
->setParameter('storedObject', $storedObject)
|
||||||
|
->getQuery();
|
||||||
|
|
||||||
|
return $query->getResult();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user