[ ['guardWaitingForSignature', 0], ], ]; } public function guardWaitingForSignature(GuardEvent $event): void { $entityWorkflow = $event->getSubject(); if (!$entityWorkflow instanceof EntityWorkflow) { return; } $transitionMetadata = $event->getWorkflow()->getMetadataStore()->getTransitionMetadata($event->getTransition()); if (false === ($transitionMetadata['isForward'] ?? true)) { return; } foreach ($entityWorkflow->getCurrentStep()->getSignatures() as $signature) { if (EntityWorkflowSignatureStateEnum::PENDING === $signature->getState()) { if ($this->security->isGranted(EntityWorkflowTransitionVoter::APPLY_ALL_TRANSITIONS, $entityWorkflow)) { continue; } $event->addTransitionBlocker( new TransitionBlocker( 'workflow.blocked_waiting_for_pending_signer', '2eabe9e6-79c2-11ef-986c-2ba376180859', ['signer' => $this->chillEntityRenderManager->renderString($signature->getSigner(), ['addAge' => false])] ) ); } } } }