* * 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:----Qb1vTtwChWbH8X6jJrnKtLRdFuzE9AA+P9BE1Y3b750ulMnZ59QJomiPcG/zP2Ayyw3FRudCph+Qh8/1Gjsk5FYC+FM6Hs0LupveYg4c3mlwYtBUkCEcohExxDNnOPP+TBc4+hPDxFcMva1XvwOI0mnr1CPG3jsS00kHPuqHRkQhCbty5yLjhImH/Kob0ZNO00NnakugqY/uWs+6jSu2ftIFF81H4WrDeMxy737Lr3AHw7+6XjUdSL+2DXB1UEqULYx+UZ1f16EZKVwTqf/wPjA+IvpJ1wlNMlAqhoOYx3UDW4FGN73yMLEOzhUwIiebVKgnd/X+XWA0JwwYFtvJ41m0GC9VYlq9y/AVFf0syeDurP7g68W1MnVpppPiSqKq8AjD2Dvd7Qff+irCvZUfKz+RBKHgAxMiMhyjaG0kAnlGADiLHblbdu5p2K0QLRvx6a/3VOX3dS5vcfT3V6von4KoMzLNn+bFxcgBAdf8WBPmy8pSEZUHpl/0TAnt79ttLp2QNrEhXymr3QtVSchRzJyMAlASqWg5R33IUD2QWCmW3b/hJlrZO14GPd6XqMdXq7KGXRyerb6izNs/FyGYLP608319A3edjhA4i82Ip8iItTuXPej2/faMzCsDE8YZsbOqoxhW1LPduGLaJDUpTpMYFNVsQmYJNHbLS6ecHUs=----ATTACHMENT:----MjE2MTgyMjIxNTAwMzY1NSAzNjA3ODY4ODg0MDI4ODM2IDg1NzA0NjczMDYwMzY2MDc=