diff options
author | Ryan Weaver <ryan@thatsquality.com> | 2016-03-12 12:14:01 -0500 |
---|---|---|
committer | Fabien Potencier <fabien.potencier@gmail.com> | 2016-03-31 07:33:59 +0200 |
commit | 2a3ff4c385a48668a2595bddb5ecbc45830c03cd (patch) | |
tree | 7dc3a78ebca99626e164ba6357ca28d7be19212b | |
parent | eb2d9075275e762a5086786449a820b07176f0d0 (diff) | |
download | symfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.zip symfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.tar.gz symfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.tar.bz2 |
[Security] Deprecate onAuthenticationSuccess()
-rw-r--r-- | Guard/Authenticator/AbstractFormLoginAuthenticator.php | 18 | ||||
-rw-r--r-- | Guard/Tests/Authenticator/AbstractFormLoginAuthenticatorTest.php | 64 |
2 files changed, 71 insertions, 11 deletions
diff --git a/Guard/Authenticator/AbstractFormLoginAuthenticator.php b/Guard/Authenticator/AbstractFormLoginAuthenticator.php index cefafc1..d10e486 100644 --- a/Guard/Authenticator/AbstractFormLoginAuthenticator.php +++ b/Guard/Authenticator/AbstractFormLoginAuthenticator.php @@ -36,16 +36,6 @@ abstract class AbstractFormLoginAuthenticator extends AbstractGuardAuthenticator abstract protected function getLoginUrl(); /** - * The user will be redirected to the secure page they originally tried - * to access. But if no such page exists (i.e. the user went to the - * login page directly), this returns the URL the user should be redirected - * to after logging in successfully (e.g. your homepage). - * - * @return string - */ - abstract protected function getDefaultSuccessRedirectUrl(); - - /** * Override to change what happens after a bad username/password is submitted. * * @param Request $request @@ -72,7 +62,13 @@ abstract class AbstractFormLoginAuthenticator extends AbstractGuardAuthenticator */ public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) { - // if the user hit a secure page and start() was called, this was + @trigger_error(sprintf('The AbstractFormLoginAuthenticator::onAuthenticationSuccess() implementation was deprecated in Symfony 3.1 and will be removed in Symfony 4.0. You should implement this method yourself in %s and remove getDefaultSuccessRedirectUrl().', get_class($this)), E_USER_DEPRECATED); + + if (!method_exists($this, 'getDefaultSuccessRedirectUrl')) { + throw new \Exception(sprintf('You must implement onAuthenticationSuccess() or getDefaultSuccessRedirectURL() in %s.', get_class($this))); + } + + // if the user hits a secure page and start() was called, this was // the URL they were on, and probably where you want to redirect to $targetPath = $this->getTargetPath($request->getSession(), $providerKey); diff --git a/Guard/Tests/Authenticator/AbstractFormLoginAuthenticatorTest.php b/Guard/Tests/Authenticator/AbstractFormLoginAuthenticatorTest.php new file mode 100644 index 0000000..e86b5ad --- /dev/null +++ b/Guard/Tests/Authenticator/AbstractFormLoginAuthenticatorTest.php @@ -0,0 +1,64 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Security\Guard\Tests\Authenticator; + +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Security\Core\User\UserProviderInterface; +use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator; + +class AbstractFormLoginAuthenticatorTest extends \PHPUnit_Framework_TestCase +{ + /** + * @group legacy + */ + public function testLegacyWithLoginUrl() + { + $request = new Request(); + $request->setSession($this->getMock('Symfony\Component\HttpFoundation\Session\Session')); + + $authenticator = new LegacyFormLoginAuthenticator(); + /** @var RedirectResponse $actualResponse */ + $actualResponse = $authenticator->onAuthenticationSuccess( + $request, + $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'), + 'provider_key' + ); + + $this->assertEquals('/default_url', $actualResponse->getTargetUrl()); + } +} + +class LegacyFormLoginAuthenticator extends AbstractFormLoginAuthenticator +{ + protected function getDefaultSuccessRedirectUrl() + { + return '/default_url'; + } + + protected function getLoginUrl() + { + } + + public function getCredentials(Request $request) + { + } + + public function getUser($credentials, UserProviderInterface $userProvider) + { + } + + public function checkCredentials($credentials, UserInterface $user) + { + } +} |