public function testGetReturnUrlWithQueryParametersNotAbsolute() { $this->assertEquals('return/page', UrlUtilities::getReturnUrl('some/page?q=something&return=return%2Fpage', null, null, false)); $this->assertEquals('return/page', UrlUtilities::getReturnUrl('some/page?q=something&foo=bar&return=return%2Fpage', null, null, false)); $this->assertEquals('return/page?q=query', UrlUtilities::getReturnUrl('some/page?return=return%2Fpage%3Fq%3Dquery', null, null, false)); $this->assertEquals('return/page?q=query&x=y', UrlUtilities::getReturnUrl('some/page?return=return%2Fpage%3Fq%3Dquery%26x%3Dy', null, null, false)); $this->assertEquals('return/page?q=query', UrlUtilities::getReturnUrl('some/page?q=something&return=return%2Fpage%3Fq%3Dquery', null, null, false)); $this->assertEquals('return/page?q=query&x=y', UrlUtilities::getReturnUrl('some/page?q=something&foo=bar&return=return%2Fpage%3Fq%3Dquery%26x%3Dy', null, null, false)); }
/** * Jump to a particular step within the given form. This may fail if the step does not exist (out of range) or if * a form rule prevents the user from jumping to the specified step (e.g. a previous step has not been completed, * or an intervening step is marked one-way). * * @param \Symfony\Component\HttpFoundation\Request $request * * @return \Symfony\Component\HttpFoundation\RedirectResponse * * @throws \OutOfBoundsException */ public function jumpController(Request $request) { LoggerRegistry::debug('FormsModule::jumpController()'); // Get the form details. $formKey = $request->attributes->get('slug'); $form = $this->registry()->getForm($formKey, $request); // Get the step being requested in the jump $jumpStep = intval($request->query->get('step', $this->registry()->getCurrentStep($formKey))); // Validation if ($jumpStep < 0 || $jumpStep >= $form->getStepsCount()) { throw new \OutOfBoundsException(sprintf('FormsModule cannot jump to step %d in form "%s": out of range', $jumpStep, $formKey)); } if (!in_array($jumpStep, $this->registry()->getAvailableSteps($formKey))) { throw new \OutOfBoundsException(sprintf('FormsModule cannot jump to step %d in form "%s": step not available', $jumpStep, $formKey)); } // Update progress and redirect back to the form URL. $this->registry()->setCurrentStep($formKey, $jumpStep); return new RedirectResponse(UrlUtilities::getReturnUrl($request, 'form-url')); }
/** * Display the recover password page. * * @param ViewInterface $view * @param Request $request * * @return RedirectResponse|null */ public function recoverLoginController(ViewInterface $view, Request $request) { LoggerRegistry::debug('UserIntegrationModule::recoverLoginController()'); if ($this->getEngine()->getUserManager()->isLoggedIn()) { return new RedirectResponse(UrlUtilities::getReturnUrl($request)); } $view['form-key'] = $this->config('recover-login.form.key'); return null; }