Implement context-specific voters for all current entities that can be linked to a document

For reusability an AbstractStoredObjectVoter was created and a StoredObjectVoterInterface.
A WorkflowDocumentService checks whether the StoredObject is involved in a workflow.
This commit is contained in:
2024-06-26 13:45:15 +02:00
parent 4607c36b57
commit c06e76a0ee
18 changed files with 456 additions and 88 deletions

View File

@@ -13,19 +13,19 @@ class WorkflowDocumentService
{
}
public function getRelatedWorkflow($entity): ?EntityWorkflow
public function notBlockedByWorkflow($entity): bool
{
return $this->repository->findByRelatedEntity(get_class($entity), $entity->getId());
}
/**
* @var EntityWorkflow
*/
$workflow = $this->repository->findByRelatedEntity(get_class($entity), $entity->getId());
public function canApplyTransition(EntityWorkflow $entityWorkflow): bool
{
if ($entityWorkflow->isFinal()) {
if ($workflow->isFinal()) {
return false;
}
$currentUser = $this->security->getUser();
if ($entityWorkflow->getCurrentStep()->getAllDestUser()->contains($currentUser)) {
if ($workflow->getCurrentStep()->getAllDestUser()->contains($currentUser)) {
return true;
}