public function testSkip() { $tasks = []; $taskBuilder = new TestTaskBuilder(); $tasks[] = $taskBuilder->setPriority(10)->setMandatory(false)->setName('Task 1')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->build(); $tasks[] = $taskBuilder->setPriority(50)->setMandatory(false)->setName('Task 2')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->build(); $tasks[] = $taskBuilder->setPriority(70)->setMandatory(false)->setName('Task 3')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->setSkipRoute('skip')->build(); $task = $this->tasksManager->getNextTask($tasks, 'skip'); $this->assertEquals(50, $task->getPriority()); }
private function checkTasks(GetResponseEvent $event, EventDispatcherInterface $dispatcher) { $tasksEvent = new GetTasksEvent($event->getRequest()); $dispatcher->dispatch(LoginCidadaoCoreEvents::GET_TASKS, $tasksEvent); $routeName = $event->getRequest()->get('_route'); $tasks = $tasksEvent->getTasks(); $task = $this->tasksManager->getNextTask($tasks, $routeName); if (!$task instanceof Task) { return false; } if ($this->tasksManager->checkTaskSkipped($task)) { return false; } $target = $task->getTarget(); if ($task instanceof MigratePasswordEncoderTask) { $this->session->set('force_password_change', true); } // If the user is not trying to access one of the task's routes, redirect to the default route if (false === $task->isTaskRoute($routeName)) { $this->intentManager->setIntent($event->getRequest(), false); $this->redirectRoute($target[0], $target[1]); } return true; }