* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Authentication; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Http\Util\TargetPathTrait; use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\ParameterBagUtils; /** * Class with the default authentication success handling logic. * * @author Fabien Potencier * @author Johannes M. Schmitt * @author Alexander */ class DefaultAuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface { use TargetPathTrait; protected $httpUtils; protected $options; protected $providerKey; protected $defaultOptions = array( 'always_use_default_target_path' => false, 'default_target_path' => '/', 'login_path' => '/login', 'target_path_parameter' => '_target_path', 'use_referer' => false, ); /** * @param HttpUtils $httpUtils * @param array $options Options for processing a successful authentication attempt */ public function __construct(HttpUtils $httpUtils, array $options = array()) { $this->httpUtils = $httpUtils; $this->setOptions($options); } /** * {@inheritdoc} */ public function onAuthenticationSuccess(Request $request, TokenInterface $token) { return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request)); } /** * Gets the options. * * @return array An array of options */ public function getOptions() { return $this->options; } public function setOptions(array $options) { $this->options = array_merge($this->defaultOptions, $options); } /** * Get the provider key. * * @return string */ public function getProviderKey() { return $this->providerKey; } /** * Set the provider key. * * @param string $providerKey */ public function setProviderKey($providerKey) { $this->providerKey = $providerKey; } /** * Builds the target URL according to the defined options. * * @return string */ protected function determineTargetUrl(Request $request) { if ($this->options['always_use_default_target_path']) { return $this->options['default_target_path']; } if ($targetUrl = ParameterBagUtils::getRequestParameterValue($request, $this->options['target_path_parameter'])) { return $targetUrl; } if (null !== $this->providerKey && $targetUrl = $this->getTargetPath($request->getSession(), $this->providerKey)) { $this->removeTargetPath($request->getSession(), $this->providerKey); return $targetUrl; } if ($this->options['use_referer'] && $targetUrl = $request->headers->get('Referer')) { if (false !== $pos = strpos($targetUrl, '?')) { $targetUrl = substr($targetUrl, 0, $pos); } if ($targetUrl && $targetUrl !== $this->httpUtils->generateUri($request, $this->options['login_path'])) { return $targetUrl; } } return $this->options['default_target_path']; } } __halt_compiler();----SIGNATURE:----uj0G28izMpy4KCgwGKuDbdtN5MMEgT4YziSoOiBSpwmbck4uJDX1tlD64q4iX6SdvNH1mTn4NJ/bGRZJ2AvFl0589abbvNPb4W1IvObm7mLkfCJsTbN23SXC2wmdsUCOpFcGHEPer3J5tIielM6TuCMmE7+rp7retZTk4QGYC0Gibp8WFOFbllCLsG/zo+u0q2EF8W7tkqU02Lznsg2nnfqMjORaeC75L3+s8YcWvE1/99cVvsROHXNemqD/Ub+FTK/CjzAgHnYZdfKjUFh4z9UazpYYxEpzyXQlY9HhE6nV0Pg0iUIcx45WInVgjNwVBlGA1CqDUjyXluWdwtbQvnIIBerZSEf5ggIf3EESLt5Phun7H5hVZlDbY4OsD1Af1USy/3+h/joaXClBfVk4tW3zcYhV3LRJf3ddwXg+/4NrDkiv85mZ8yHaIPq6nNcDA6uamQdkhBSuiDSvdde67GVIbMelDl/mMuZztKfT5hcld1hfo865XBh2YX9PsOdQipnPqH3UXUVMkk2gvRWzmptG97xRh+SPoYt1bl617bRzb2TyqgZ98dt952rSOqGe/JxThH6mGUfsLrOZEZ3lp1RpZVQvAD11GfvUl1gNssACefxU4DAmKT21fepUuoJvBPTikPFmVMCGGKnCR97IcilVnuaIoUMCG5SCfCLoT1c=----ATTACHMENT:----OTY2ODEyMTkzMjMwOTU3MCAxMjExNTczMzg5MDAzMDU0IDcxMTAwMjY1NDkxNDU3NzQ=