summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Weaver <ryan@thatsquality.com>2016-03-12 12:14:01 -0500
committerFabien Potencier <fabien.potencier@gmail.com>2016-03-31 07:33:59 +0200
commit2a3ff4c385a48668a2595bddb5ecbc45830c03cd (patch)
tree7dc3a78ebca99626e164ba6357ca28d7be19212b
parenteb2d9075275e762a5086786449a820b07176f0d0 (diff)
downloadsymfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.zip
symfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.tar.gz
symfony-security-2a3ff4c385a48668a2595bddb5ecbc45830c03cd.tar.bz2
[Security] Deprecate onAuthenticationSuccess()
-rw-r--r--Guard/Authenticator/AbstractFormLoginAuthenticator.php18
-rw-r--r--Guard/Tests/Authenticator/AbstractFormLoginAuthenticatorTest.php64
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)
+ {
+ }
+}