/** * Check if the user is allowed to reach the step. * * @param ModelInterface $model * @param Step $step * @throws AccessDeniedException */ protected function checkCredentials(ModelInterface $model, Step $step) { $roles = $step->getRoles(); if (!empty($roles) && !$this->authorizationChecker->isGranted($roles, $model->getWorkflowObject())) { throw new AccessDeniedException($step->getName()); } }
/** * Create a new model state. * * @param ModelInterface $model * @param string $processName * @param string $stepName * @param ModelState $previous * @return \Lexik\Bundle\WorkflowBundle\Entity\ModelState */ protected function createModelState(ModelInterface $model, $processName, $stepName, $previous = null) { $modelState = new ModelState(); $modelState->setWorkflowIdentifier($model->getWorkflowIdentifier()); $modelState->setProcessName($processName); $modelState->setStepName($stepName); $modelState->setData($model->getWorkflowData()); if ($previous instanceof ModelState) { $modelState->setPrevious($previous); } return $modelState; }