summaryrefslogtreecommitdiffstats
path: root/Core
diff options
context:
space:
mode:
authorFabien Potencier <fabien.potencier@gmail.com>2012-06-18 08:12:50 +0200
committerFabien Potencier <fabien.potencier@gmail.com>2012-06-18 08:12:50 +0200
commite13a63c0cbbd938589e2ecdf6af0402651cbb673 (patch)
tree84af98c95faf22555a8591efeb28f42fe5eb53f4 /Core
parent81db3fb8af37dd884580433a647df23d6de5347e (diff)
downloadsymfony-security-e13a63c0cbbd938589e2ecdf6af0402651cbb673.zip
symfony-security-e13a63c0cbbd938589e2ecdf6af0402651cbb673.tar.gz
symfony-security-e13a63c0cbbd938589e2ecdf6af0402651cbb673.tar.bz2
[Security] allowed class names to be passed as an argument to EncoderFactoryInterface::getEncoder()
Diffstat (limited to 'Core')
-rw-r--r--Core/Encoder/EncoderFactory.php6
-rw-r--r--Core/Encoder/EncoderFactoryInterface.php8
2 files changed, 8 insertions, 6 deletions
diff --git a/Core/Encoder/EncoderFactory.php b/Core/Encoder/EncoderFactory.php
index 738706a..866c809 100644
--- a/Core/Encoder/EncoderFactory.php
+++ b/Core/Encoder/EncoderFactory.php
@@ -30,10 +30,10 @@ class EncoderFactory implements EncoderFactoryInterface
/**
* {@inheritDoc}
*/
- public function getEncoder(UserInterface $user)
+ public function getEncoder($user)
{
foreach ($this->encoders as $class => $encoder) {
- if (!$user instanceof $class) {
+ if ((is_object($user) && !$user instanceof $class) || (!is_subclass_of($user, $class) && $user != $class)) {
continue;
}
@@ -44,7 +44,7 @@ class EncoderFactory implements EncoderFactoryInterface
return $this->encoders[$class];
}
- throw new \RuntimeException(sprintf('No encoder has been configured for account "%s".', get_class($user)));
+ throw new \RuntimeException(sprintf('No encoder has been configured for account "%s".', is_object($class) ? get_class($user) : $class));
}
/**
diff --git a/Core/Encoder/EncoderFactoryInterface.php b/Core/Encoder/EncoderFactoryInterface.php
index 3ae07e6..125e57b 100644
--- a/Core/Encoder/EncoderFactoryInterface.php
+++ b/Core/Encoder/EncoderFactoryInterface.php
@@ -23,9 +23,11 @@ interface EncoderFactoryInterface
/**
* Returns the password encoder to use for the given account.
*
- * @param UserInterface $user
+ * @param UserInterface|string $user A UserInterface instance of a class name
*
- * @return PasswordEncoderInterface never null
+ * @return PasswordEncoderInterface
+ *
+ * @throws \RuntimeException when no password encoder could be found for the user
*/
- function getEncoder(UserInterface $user);
+ function getEncoder($user);
}