summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md5
-rw-r--r--Core/Authentication/Provider/AuthenticationProviderInterface.php7
-rw-r--r--Core/Authentication/Provider/LdapBindAuthenticationProvider.php10
-rw-r--r--Core/Authentication/Provider/UserAuthenticationProvider.php2
-rw-r--r--Core/Authentication/SimpleFormAuthenticatorInterface.php24
-rw-r--r--Core/Authentication/SimplePreAuthenticatorInterface.php24
-rw-r--r--Core/Authentication/Token/AnonymousToken.php10
-rw-r--r--Core/Authentication/Token/RememberMeToken.php10
-rw-r--r--Core/AuthenticationEvents.php11
-rw-r--r--Core/Authorization/AccessDecisionManager.php32
-rw-r--r--Core/Authorization/AccessDecisionManagerInterface.php22
-rw-r--r--Core/Authorization/DebugAccessDecisionManager.php134
-rw-r--r--Core/Authorization/Voter/AbstractVoter.php117
-rw-r--r--Core/Authorization/Voter/AuthenticatedVoter.php22
-rw-r--r--Core/Authorization/Voter/ExpressionVoter.php32
-rw-r--r--Core/Authorization/Voter/RoleVoter.php20
-rw-r--r--Core/Authorization/Voter/Voter.php22
-rw-r--r--Core/Authorization/Voter/VoterInterface.php26
-rw-r--r--Core/Encoder/BCryptPasswordEncoder.php4
-rw-r--r--Core/SecurityContext.php104
-rw-r--r--Core/SecurityContextInterface.php30
-rw-r--r--Core/Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php15
-rw-r--r--Core/Tests/Authorization/AccessDecisionManagerTest.php56
-rw-r--r--Core/Tests/Authorization/DebugAccessDecisionManagerTest.php43
-rw-r--r--Core/Tests/Authorization/Voter/AbstractVoterTest.php58
-rw-r--r--Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php6
-rw-r--r--Core/Tests/Authorization/Voter/ExpressionVoterTest.php9
-rw-r--r--Core/Tests/Authorization/Voter/Fixtures/MyVoter.php27
-rw-r--r--Core/Tests/Authorization/Voter/RoleVoterTest.php7
-rw-r--r--Core/Tests/LegacySecurityContextTest.php132
-rw-r--r--Core/Tests/User/LdapUserProviderTest.php214
-rw-r--r--Core/Tests/Util/ClassUtilsTest.php53
-rw-r--r--Core/Tests/Util/StringUtilsTest.php63
-rw-r--r--Core/Tests/Validator/Constraints/LegacyUserPasswordValidatorTest.php26
-rw-r--r--Core/User/LdapUserProvider.php86
-rw-r--r--Core/Util/ClassUtils.php72
-rw-r--r--Core/Util/SecureRandom.php33
-rw-r--r--Core/Util/SecureRandomInterface.php31
-rw-r--r--Core/Util/StringUtils.php70
-rw-r--r--Core/composer.json16
-rw-r--r--Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php6
-rw-r--r--Csrf/Tests/TokenStorage/NativeSessionTokenStorageTest.php3
-rw-r--r--Csrf/TokenGenerator/UriSafeTokenGenerator.php10
-rw-r--r--Csrf/TokenStorage/NativeSessionTokenStorage.php6
-rw-r--r--Csrf/composer.json8
-rw-r--r--Guard/Authenticator/AbstractFormLoginAuthenticator.php21
-rw-r--r--Guard/Firewall/GuardAuthenticationListener.php2
-rw-r--r--Guard/Provider/GuardAuthenticationProvider.php1
-rw-r--r--Guard/Tests/Authenticator/FormLoginAuthenticatorTest.php9
-rw-r--r--Guard/composer.json8
-rw-r--r--Http/Authentication/DefaultAuthenticationSuccessHandler.php7
-rw-r--r--Http/Authentication/SimpleFormAuthenticatorInterface.php6
-rw-r--r--Http/Authentication/SimplePreAuthenticatorInterface.php6
-rw-r--r--Http/EntryPoint/DigestAuthenticationEntryPoint.php10
-rw-r--r--Http/Firewall/ContextListener.php9
-rw-r--r--Http/Firewall/ExceptionListener.php15
-rw-r--r--Http/Firewall/LogoutListener.php21
-rw-r--r--Http/Firewall/SimpleFormAuthenticationListener.php24
-rw-r--r--Http/Firewall/SimplePreAuthenticationListener.php2
-rw-r--r--Http/Firewall/UsernamePasswordFormAuthenticationListener.php21
-rw-r--r--Http/Logout/LogoutUrlGenerator.php10
-rw-r--r--Http/RememberMe/AbstractRememberMeServices.php10
-rw-r--r--Http/RememberMe/PersistentTokenBasedRememberMeServices.php23
-rw-r--r--Http/SecurityEvents.php10
-rw-r--r--Http/Session/SessionAuthenticationStrategy.php5
-rw-r--r--Http/Tests/Firewall/ContextListenerTest.php8
-rw-r--r--Http/Tests/Firewall/ExceptionListenerTest.php14
-rw-r--r--Http/Tests/Session/SessionAuthenticationStrategyTest.php17
-rw-r--r--Http/Tests/Util/TargetPathTraitTest.php76
-rw-r--r--Http/Util/TargetPathTrait.php58
-rw-r--r--Http/composer.json18
-rw-r--r--Resources/translations/security.ar.xlf71
-rw-r--r--Resources/translations/security.az.xlf71
-rw-r--r--Resources/translations/security.bg.xlf71
-rw-r--r--Resources/translations/security.ca.xlf71
-rw-r--r--Resources/translations/security.cs.xlf71
-rw-r--r--Resources/translations/security.da.xlf71
-rw-r--r--Resources/translations/security.de.xlf71
-rw-r--r--Resources/translations/security.el.xlf71
-rw-r--r--Resources/translations/security.en.xlf71
-rw-r--r--Resources/translations/security.es.xlf71
-rw-r--r--Resources/translations/security.fa.xlf71
-rw-r--r--Resources/translations/security.fr.xlf71
-rw-r--r--Resources/translations/security.gl.xlf71
-rw-r--r--Resources/translations/security.he.xlf71
-rw-r--r--Resources/translations/security.hr.xlf71
-rw-r--r--Resources/translations/security.hu.xlf71
-rw-r--r--Resources/translations/security.id.xlf71
-rw-r--r--Resources/translations/security.it.xlf71
-rw-r--r--Resources/translations/security.ja.xlf71
-rw-r--r--Resources/translations/security.lb.xlf71
-rw-r--r--Resources/translations/security.lt.xlf71
-rw-r--r--Resources/translations/security.nl.xlf71
-rw-r--r--Resources/translations/security.no.xlf71
-rw-r--r--Resources/translations/security.pl.xlf71
-rw-r--r--Resources/translations/security.pt_BR.xlf71
-rw-r--r--Resources/translations/security.pt_PT.xlf71
-rw-r--r--Resources/translations/security.ro.xlf71
-rw-r--r--Resources/translations/security.ru.xlf71
-rw-r--r--Resources/translations/security.sk.xlf71
-rw-r--r--Resources/translations/security.sl.xlf71
-rw-r--r--Resources/translations/security.sr_Cyrl.xlf71
-rw-r--r--Resources/translations/security.sr_Latn.xlf71
-rw-r--r--Resources/translations/security.sv.xlf71
-rw-r--r--Resources/translations/security.th.xlf71
-rw-r--r--Resources/translations/security.tr.xlf71
-rw-r--r--Resources/translations/security.ua.xlf71
-rw-r--r--Resources/translations/security.vi.xlf71
-rw-r--r--Resources/translations/security.zh_CN.xlf71
-rw-r--r--Tests/Http/Firewall/UsernamePasswordFormAuthenticationListenerTest.php8
-rw-r--r--Tests/Resources/TranslationFilesTest.php31
-rw-r--r--Tests/TranslationSyncStatusTest.php63
-rw-r--r--composer.json26
113 files changed, 743 insertions, 4212 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b33f053..107ed1d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
CHANGELOG
=========
+3.0.0
+-----
+
+ * removed all deprecated code
+
2.8.0
-----
diff --git a/Core/Authentication/Provider/AuthenticationProviderInterface.php b/Core/Authentication/Provider/AuthenticationProviderInterface.php
index adad258..f3e1590 100644
--- a/Core/Authentication/Provider/AuthenticationProviderInterface.php
+++ b/Core/Authentication/Provider/AuthenticationProviderInterface.php
@@ -25,6 +25,13 @@ use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterfac
interface AuthenticationProviderInterface extends AuthenticationManagerInterface
{
/**
+ * Use this constant for not provided username.
+ *
+ * @var string
+ */
+ const USERNAME_NONE_PROVIDED = 'NONE_PROVIDED';
+
+ /**
* Checks whether this provider supports the given token.
*
* @param TokenInterface $token A TokenInterface instance
diff --git a/Core/Authentication/Provider/LdapBindAuthenticationProvider.php b/Core/Authentication/Provider/LdapBindAuthenticationProvider.php
index e887f99..5ebb09a 100644
--- a/Core/Authentication/Provider/LdapBindAuthenticationProvider.php
+++ b/Core/Authentication/Provider/LdapBindAuthenticationProvider.php
@@ -17,7 +17,7 @@ use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\User\UserCheckerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
-use Symfony\Component\Ldap\LdapClientInterface;
+use Symfony\Component\Ldap\LdapInterface;
use Symfony\Component\Ldap\Exception\ConnectionException;
/**
@@ -40,11 +40,11 @@ class LdapBindAuthenticationProvider extends UserAuthenticationProvider
* @param UserProviderInterface $userProvider A UserProvider
* @param UserCheckerInterface $userChecker A UserChecker
* @param string $providerKey The provider key
- * @param LdapClientInterface $ldap An Ldap client
+ * @param LdapInterface $ldap A Ldap client
* @param string $dnString A string used to create the bind DN
* @param bool $hideUserNotFoundExceptions Whether to hide user not found exception or not
*/
- public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, $providerKey, LdapClientInterface $ldap, $dnString = '{username}', $hideUserNotFoundExceptions = true)
+ public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, $providerKey, LdapInterface $ldap, $dnString = '{username}', $hideUserNotFoundExceptions = true)
{
parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions);
@@ -58,7 +58,7 @@ class LdapBindAuthenticationProvider extends UserAuthenticationProvider
*/
protected function retrieveUser($username, UsernamePasswordToken $token)
{
- if ('NONE_PROVIDED' === $username) {
+ if (AuthenticationProviderInterface::USERNAME_NONE_PROVIDED === $username) {
throw new UsernameNotFoundException('Username can not be null');
}
@@ -78,7 +78,7 @@ class LdapBindAuthenticationProvider extends UserAuthenticationProvider
}
try {
- $username = $this->ldap->escape($username, '', LDAP_ESCAPE_DN);
+ $username = $this->ldap->escape($username, '', LdapInterface::ESCAPE_DN);
$dn = str_replace('{username}', $username, $this->dnString);
$this->ldap->bind($dn, $password);
diff --git a/Core/Authentication/Provider/UserAuthenticationProvider.php b/Core/Authentication/Provider/UserAuthenticationProvider.php
index 2674088..9dc4751 100644
--- a/Core/Authentication/Provider/UserAuthenticationProvider.php
+++ b/Core/Authentication/Provider/UserAuthenticationProvider.php
@@ -63,7 +63,7 @@ abstract class UserAuthenticationProvider implements AuthenticationProviderInter
$username = $token->getUsername();
if ('' === $username || null === $username) {
- $username = 'NONE_PROVIDED';
+ $username = AuthenticationProviderInterface::USERNAME_NONE_PROVIDED;
}
try {
diff --git a/Core/Authentication/SimpleFormAuthenticatorInterface.php b/Core/Authentication/SimpleFormAuthenticatorInterface.php
deleted file mode 100644
index ae2b58b..0000000
--- a/Core/Authentication/SimpleFormAuthenticatorInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\Core\Authentication;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * @deprecated Deprecated since version 2.8, to be removed in 3.0. Use the same interface from Security\Http\Authentication instead.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface SimpleFormAuthenticatorInterface extends SimpleAuthenticatorInterface
-{
- public function createToken(Request $request, $username, $password, $providerKey);
-}
diff --git a/Core/Authentication/SimplePreAuthenticatorInterface.php b/Core/Authentication/SimplePreAuthenticatorInterface.php
deleted file mode 100644
index c01f064..0000000
--- a/Core/Authentication/SimplePreAuthenticatorInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\Core\Authentication;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * @deprecated Since version 2.8, to be removed in 3.0. Use the same interface from Security\Http\Authentication instead.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface SimplePreAuthenticatorInterface extends SimpleAuthenticatorInterface
-{
- public function createToken(Request $request, $providerKey);
-}
diff --git a/Core/Authentication/Token/AnonymousToken.php b/Core/Authentication/Token/AnonymousToken.php
index bbbfe64..76c88ba 100644
--- a/Core/Authentication/Token/AnonymousToken.php
+++ b/Core/Authentication/Token/AnonymousToken.php
@@ -47,16 +47,6 @@ class AnonymousToken extends AbstractToken
}
/**
- * @deprecated Since version 2.8, to be removed in 3.0. Use getSecret() instead.
- */
- public function getKey()
- {
- @trigger_error(__method__.'() is deprecated since version 2.8 and will be removed in 3.0. Use getSecret() instead.', E_USER_DEPRECATED);
-
- return $this->getSecret();
- }
-
- /**
* Returns the secret.
*
* @return string
diff --git a/Core/Authentication/Token/RememberMeToken.php b/Core/Authentication/Token/RememberMeToken.php
index 60e36f2..edd77ab 100644
--- a/Core/Authentication/Token/RememberMeToken.php
+++ b/Core/Authentication/Token/RememberMeToken.php
@@ -74,16 +74,6 @@ class RememberMeToken extends AbstractToken
}
/**
- * @deprecated Since version 2.8, to be removed in 3.0. Use getSecret() instead.
- */
- public function getKey()
- {
- @trigger_error(__method__.'() is deprecated since version 2.8 and will be removed in 3.0. Use getSecret() instead.', E_USER_DEPRECATED);
-
- return $this->getSecret();
- }
-
- /**
* Returns the secret.
*
* @return string
diff --git a/Core/AuthenticationEvents.php b/Core/AuthenticationEvents.php
index 13bce30..dfbd903 100644
--- a/Core/AuthenticationEvents.php
+++ b/Core/AuthenticationEvents.php
@@ -17,10 +17,7 @@ final class AuthenticationEvents
* The AUTHENTICATION_SUCCESS event occurs after a user is authenticated
* by one provider.
*
- * The event listener method receives a
- * Symfony\Component\Security\Core\Event\AuthenticationEvent instance.
- *
- * @Event
+ * @Event("Symfony\Component\Security\Core\Event\AuthenticationEvent")
*
* @var string
*/
@@ -30,11 +27,7 @@ final class AuthenticationEvents
* The AUTHENTICATION_FAILURE event occurs after a user cannot be
* authenticated by any of the providers.
*
- * The event listener method receives a
- * Symfony\Component\Security\Core\Event\AuthenticationFailureEvent
- * instance.
- *
- * @Event
+ * @Event("Symfony\Component\Security\Core\Event\AuthenticationFailureEvent")
*
* @var string
*/
diff --git a/Core/Authorization/AccessDecisionManager.php b/Core/Authorization/AccessDecisionManager.php
index 7cefef1..e40d906 100644
--- a/Core/Authorization/AccessDecisionManager.php
+++ b/Core/Authorization/AccessDecisionManager.php
@@ -73,38 +73,6 @@ class AccessDecisionManager implements AccessDecisionManagerInterface
}
/**
- * {@inheritdoc}
- */
- public function supportsAttribute($attribute)
- {
- @trigger_error('The '.__METHOD__.' is deprecated since version 2.8 and will be removed in version 3.0.', E_USER_DEPRECATED);
-
- foreach ($this->voters as $voter) {
- if ($voter->supportsAttribute($attribute)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- @trigger_error('The '.__METHOD__.' is deprecated since version 2.8 and will be removed in version 3.0.', E_USER_DEPRECATED);
-
- foreach ($this->voters as $voter) {
- if ($voter->supportsClass($class)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
* Grants access if any voter returns an affirmative response.
*
* If all voters abstained from voting, the decision will be based on the
diff --git a/Core/Authorization/AccessDecisionManagerInterface.php b/Core/Authorization/AccessDecisionManagerInterface.php
index d18b5e3..723ef19 100644
--- a/Core/Authorization/AccessDecisionManagerInterface.php
+++ b/Core/Authorization/AccessDecisionManagerInterface.php
@@ -30,26 +30,4 @@ interface AccessDecisionManagerInterface
* @return bool true if the access is granted, false otherwise
*/
public function decide(TokenInterface $token, array $attributes, $object = null);
-
- /**
- * Checks if the access decision manager supports the given attribute.
- *
- * @param string $attribute An attribute
- *
- * @return bool true if this decision manager supports the attribute, false otherwise
- *
- * @deprecated since version 2.8, to be removed in 3.0.
- */
- public function supportsAttribute($attribute);
-
- /**
- * Checks if the access decision manager supports the given class.
- *
- * @param string $class A class name
- *
- * @return true if this decision manager can process the class
- *
- * @deprecated since version 2.8, to be removed in 3.0.
- */
- public function supportsClass($class);
}
diff --git a/Core/Authorization/DebugAccessDecisionManager.php b/Core/Authorization/DebugAccessDecisionManager.php
new file mode 100644
index 0000000..aa15443
--- /dev/null
+++ b/Core/Authorization/DebugAccessDecisionManager.php
@@ -0,0 +1,134 @@
+<?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\Core\Authorization;
+
+use Doctrine\Common\Util\ClassUtils;
+use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
+
+/**
+ * Decorates the original AccessDecisionManager class to log information
+ * about the security voters and the decisions made by them.
+ *
+ * @author Javier Eguiluz <javier.eguiluz@gmail.com>
+ *
+ * @internal
+ */
+class DebugAccessDecisionManager implements AccessDecisionManagerInterface
+{
+ private $manager;
+ private $strategy;
+ private $voters = array();
+ private $decisionLog = array();
+
+ public function __construct(AccessDecisionManagerInterface $manager)
+ {
+ $this->manager = $manager;
+
+ if ($this->manager instanceof AccessDecisionManager) {
+ // The strategy is stored in a private property of the decorated service
+ $reflection = new \ReflectionProperty(AccessDecisionManager::class, 'strategy');
+ $reflection->setAccessible(true);
+ $this->strategy = $reflection->getValue($manager);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function decide(TokenInterface $token, array $attributes, $object = null)
+ {
+ $result = $this->manager->decide($token, $attributes, $object);
+
+ $this->decisionLog[] = array(
+ 'attributes' => $attributes,
+ 'object' => $this->getStringRepresentation($object),
+ 'result' => $result,
+ );
+
+ return $result;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setVoters(array $voters)
+ {
+ if (!method_exists($this->manager, 'setVoters')) {
+ return;
+ }
+
+ $this->voters = $voters;
+ $this->manager->setVoters($voters);
+ }
+
+ /**
+ * @return string
+ */
+ public function getStrategy()
+ {
+ // The $strategy property is misleading because it stores the name of its
+ // method (e.g. 'decideAffirmative') instead of the original strategy name
+ // (e.g. 'affirmative')
+ return null === $this->strategy ? '-' : strtolower(substr($this->strategy, 6));
+ }
+
+ /**
+ * @return array
+ */
+ public function getVoters()
+ {
+ return $this->voters;
+ }
+
+ /**
+ * @return array
+ */
+ public function getDecisionLog()
+ {
+ return $this->decisionLog;
+ }
+
+ /**
+ * @param mixed $object
+ *
+ * @return string
+ */
+ private function getStringRepresentation($object)
+ {
+ if (null === $object) {
+ return 'NULL';
+ }
+
+ if (!is_object($object)) {
+ if (is_bool($object)) {
+ return sprintf('%s (%s)', gettype($object), $object ? 'true' : 'false');
+ }
+ if (is_scalar($object)) {
+ return sprintf('%s (%s)', gettype($object), $object);
+ }
+
+ return gettype($object);
+ }
+
+ $objectClass = class_exists('Doctrine\Common\Util\ClassUtils') ? ClassUtils::getClass($object) : get_class($object);
+
+ if (method_exists($object, 'getId')) {
+ $objectAsString = sprintf('ID: %s', $object->getId());
+ } elseif (method_exists($object, '__toString')) {
+ $objectAsString = (string) $object;
+ } else {
+ $objectAsString = sprintf('object hash: %s', spl_object_hash($object));
+ }
+
+ return sprintf('%s (%s)', $objectClass, $objectAsString);
+ }
+}
diff --git a/Core/Authorization/Voter/AbstractVoter.php b/Core/Authorization/Voter/AbstractVoter.php
deleted file mode 100644
index 5dcf787..0000000
--- a/Core/Authorization/Voter/AbstractVoter.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?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\Core\Authorization\Voter;
-
-@trigger_error('The '.__NAMESPACE__.'\AbstractVoter class is deprecated since version 2.8, to be removed in 3.0. Upgrade to Symfony\Component\Security\Core\Authorization\Voter\Voter instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Security\Core\User\UserInterface;
-use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-
-/**
- * Abstract Voter implementation that reduces boilerplate code required to create a custom Voter.
- *
- * @author Roman Marintšenko <inoryy@gmail.com>
- *
- * @deprecated since version 2.8, to be removed in 3.0. Upgrade to Symfony\Component\Security\Core\Authorization\Voter\Voter instead.
- */
-abstract class AbstractVoter implements VoterInterface
-{
- /**
- * {@inheritdoc}
- */
- public function supportsAttribute($attribute)
- {
- return in_array($attribute, $this->getSupportedAttributes());
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- foreach ($this->getSupportedClasses() as $supportedClass) {
- if ($supportedClass === $class || is_subclass_of($class, $supportedClass)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Iteratively check all given attributes by calling isGranted.
- *
- * This method terminates as soon as it is able to return ACCESS_GRANTED
- * If at least one attribute is supported, but access not granted, then ACCESS_DENIED is returned
- * Otherwise it will return ACCESS_ABSTAIN
- *
- * @param TokenInterface $token A TokenInterface instance
- * @param object $object The object to secure
- * @param array $attributes An array of attributes associated with the method being invoked
- *
- * @return int either ACCESS_GRANTED, ACCESS_ABSTAIN, or ACCESS_DENIED
- */
- public function vote(TokenInterface $token, $object, array $attributes)
- {
- if (!$object || !$this->supportsClass(get_class($object))) {
- return self::ACCESS_ABSTAIN;
- }
-
- // abstain vote by default in case none of the attributes are supported
- $vote = self::ACCESS_ABSTAIN;
-
- foreach ($attributes as $attribute) {
- if (!$this->supportsAttribute($attribute)) {
- continue;
- }
-
- // as soon as at least one attribute is supported, default is to deny access
- $vote = self::ACCESS_DENIED;
-
- if ($this->isGranted($attribute, $object, $token->getUser())) {
- // grant access as soon as at least one voter returns a positive response
- return self::ACCESS_GRANTED;
- }
- }
-
- return $vote;
- }
-
- /**
- * Return an array of supported classes. This will be called by supportsClass.
- *
- * @return array an array of supported classes, i.e. array('Acme\DemoBundle\Model\Product')
- */
- abstract protected function getSupportedClasses();
-
- /**
- * Return an array of supported attributes. This will be called by supportsAttribute.
- *
- * @return array an array of supported attributes, i.e. array('CREATE', 'READ')
- */
- abstract protected function getSupportedAttributes();
-
- /**
- * Perform a single access check operation on a given attribute, object and (optionally) user
- * It is safe to assume that $attribute and $object's class pass supportsAttribute/supportsClass
- * $user can be one of the following:
- * a UserInterface object (fully authenticated user)
- * a string (anonymously authenticated user).
- *
- * @param string $attribute
- * @param object $object
- * @param UserInterface|string $user
- *
- * @return bool
- */
- abstract protected function isGranted($attribute, $object, $user = null);
-}
diff --git a/Core/Authorization/Voter/AuthenticatedVoter.php b/Core/Authorization/Voter/AuthenticatedVoter.php
index 5847e0d..dc1407b 100644
--- a/Core/Authorization/Voter/AuthenticatedVoter.php
+++ b/Core/Authorization/Voter/AuthenticatedVoter.php
@@ -44,27 +44,13 @@ class AuthenticatedVoter implements VoterInterface
/**
* {@inheritdoc}
*/
- public function supportsAttribute($attribute)
- {
- return null !== $attribute && (self::IS_AUTHENTICATED_FULLY === $attribute || self::IS_AUTHENTICATED_REMEMBERED === $attribute || self::IS_AUTHENTICATED_ANONYMOUSLY === $attribute);
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function vote(TokenInterface $token, $object, array $attributes)
+ public function vote(TokenInterface $token, $subject, array $attributes)
{
$result = VoterInterface::ACCESS_ABSTAIN;
foreach ($attributes as $attribute) {
- if (!$this->supportsAttribute($attribute)) {
+ if (null === $attribute || (self::IS_AUTHENTICATED_FULLY !== $attribute
+ && self::IS_AUTHENTICATED_REMEMBERED !== $attribute
+ && self::IS_AUTHENTICATED_ANONYMOUSLY !== $attribute)) {
continue;
}
diff --git a/Core/Authorization/Voter/ExpressionVoter.php b/Core/Authorization/Voter/ExpressionVoter.php
index 96a7ece..5fd8b83 100644
--- a/Core/Authorization/Voter/ExpressionVoter.php
+++ b/Core/Authorization/Voter/ExpressionVoter.php
@@ -52,33 +52,17 @@ class ExpressionVoter implements VoterInterface
/**
* {@inheritdoc}
*/
- public function supportsAttribute($attribute)
- {
- return $attribute instanceof Expression;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function vote(TokenInterface $token, $object, array $attributes)
+ public function vote(TokenInterface $token, $subject, array $attributes)
{
$result = VoterInterface::ACCESS_ABSTAIN;
$variables = null;
foreach ($attributes as $attribute) {
- if (!$this->supportsAttribute($attribute)) {
+ if (!$attribute instanceof Expression) {
continue;
}
if (null === $variables) {
- $variables = $this->getVariables($token, $object);
+ $variables = $this->getVariables($token, $subject);
}
$result = VoterInterface::ACCESS_DENIED;
@@ -90,7 +74,7 @@ class ExpressionVoter implements VoterInterface
return $result;
}
- private function getVariables(TokenInterface $token, $object)
+ private function getVariables(TokenInterface $token, $subject)
{
if (null !== $this->roleHierarchy) {
$roles = $this->roleHierarchy->getReachableRoles($token->getRoles());
@@ -101,8 +85,8 @@ class ExpressionVoter implements VoterInterface
$variables = array(
'token' => $token,
'user' => $token->getUser(),
- 'object' => $object,
- 'subject' => $object,
+ 'object' => $subject,
+ 'subject' => $subject,
'roles' => array_map(function ($role) { return $role->getRole(); }, $roles),
'trust_resolver' => $this->trustResolver,
);
@@ -110,8 +94,8 @@ class ExpressionVoter implements VoterInterface
// this is mainly to propose a better experience when the expression is used
// in an access control rule, as the developer does not know that it's going
// to be handled by this voter
- if ($object instanceof Request) {
- $variables['request'] = $object;
+ if ($subject instanceof Request) {
+ $variables['request'] = $subject;
}
return $variables;
diff --git a/Core/Authorization/Voter/RoleVoter.php b/Core/Authorization/Voter/RoleVoter.php
index 722675d..b017c81 100644
--- a/Core/Authorization/Voter/RoleVoter.php
+++ b/Core/Authorization/Voter/RoleVoter.php
@@ -35,29 +35,13 @@ class RoleVoter implements VoterInterface
/**
* {@inheritdoc}
*/
- public function supportsAttribute($attribute)
- {
- return 0 === strpos($attribute, $this->prefix);
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function vote(TokenInterface $token, $object, array $attributes)
+ public function vote(TokenInterface $token, $subject, array $attributes)
{
$result = VoterInterface::ACCESS_ABSTAIN;
$roles = $this->extractRoles($token);
foreach ($attributes as $attribute) {
- if (!$this->supportsAttribute($attribute)) {
+ if (0 !== strpos($attribute, $this->prefix)) {
continue;
}
diff --git a/Core/Authorization/Voter/Voter.php b/Core/Authorization/Voter/Voter.php
index 8d36fd8..ba4d6af 100644
--- a/Core/Authorization/Voter/Voter.php
+++ b/Core/Authorization/Voter/Voter.php
@@ -24,36 +24,20 @@ abstract class Voter implements VoterInterface
/**
* {@inheritdoc}
*/
- public function supportsAttribute($attribute)
- {
- throw new \BadMethodCallException('supportsAttribute method is deprecated since version 2.8, to be removed in 3.0');
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- throw new \BadMethodCallException('supportsClass method is deprecated since version 2.8, to be removed in 3.0');
- }
-
- /**
- * {@inheritdoc}
- */
- public function vote(TokenInterface $token, $object, array $attributes)
+ public function vote(TokenInterface $token, $subject, array $attributes)
{
// abstain vote by default in case none of the attributes are supported
$vote = self::ACCESS_ABSTAIN;
foreach ($attributes as $attribute) {
- if (!$this->supports($attribute, $object)) {
+ if (!$this->supports($attribute, $subject)) {
continue;
}
// as soon as at least one attribute is supported, default is to deny access
$vote = self::ACCESS_DENIED;
- if ($this->voteOnAttribute($attribute, $object, $token)) {
+ if ($this->voteOnAttribute($attribute, $subject, $token)) {
// grant access as soon as at least one attribute returns a positive response
return self::ACCESS_GRANTED;
}
diff --git a/Core/Authorization/Voter/VoterInterface.php b/Core/Authorization/Voter/VoterInterface.php
index 91ddc1f..4bb7367 100644
--- a/Core/Authorization/Voter/VoterInterface.php
+++ b/Core/Authorization/Voter/VoterInterface.php
@@ -25,38 +25,16 @@ interface VoterInterface
const ACCESS_DENIED = -1;
/**
- * Checks if the voter supports the given attribute.
- *
- * @param mixed $attribute An attribute (usually the attribute name string)
- *
- * @return bool true if this Voter supports the attribute, false otherwise
- *
- * @deprecated since version 2.8, to be removed in 3.0.
- */
- public function supportsAttribute($attribute);
-
- /**
- * Checks if the voter supports the given class.
- *
- * @param string $class A class name
- *
- * @return bool true if this Voter can process the class
- *
- * @deprecated since version 2.8, to be removed in 3.0.
- */
- public function supportsClass($class);
-
- /**
* Returns the vote for the given parameters.
*
* This method must return one of the following constants:
* ACCESS_GRANTED, ACCESS_DENIED, or ACCESS_ABSTAIN.
*
* @param TokenInterface $token A TokenInterface instance
- * @param object|null $object The object to secure
+ * @param mixed $subject The subject to secure
* @param array $attributes An array of attributes associated with the method being invoked
*
* @return int either ACCESS_GRANTED, ACCESS_ABSTAIN, or ACCESS_DENIED
*/
- public function vote(TokenInterface $token, $object, array $attributes);
+ public function vote(TokenInterface $token, $subject, array $attributes);
}
diff --git a/Core/Encoder/BCryptPasswordEncoder.php b/Core/Encoder/BCryptPasswordEncoder.php
index b992765..ddac77a 100644
--- a/Core/Encoder/BCryptPasswordEncoder.php
+++ b/Core/Encoder/BCryptPasswordEncoder.php
@@ -73,9 +73,7 @@ class BCryptPasswordEncoder extends BasePasswordEncoder
$options = array('cost' => $this->cost);
if ($salt) {
- @trigger_error('Passing a $salt to '.__METHOD__.'() is deprecated since version 2.8 and will be ignored in 3.0.', E_USER_DEPRECATED);
-
- $options['salt'] = $salt;
+ // Ignore $salt, the auto-generated one is always the best
}
return password_hash($raw, PASSWORD_BCRYPT, $options);
diff --git a/Core/SecurityContext.php b/Core/SecurityContext.php
deleted file mode 100644
index 027ff49..0000000
--- a/Core/SecurityContext.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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\Core;
-
-@trigger_error('The '.__NAMESPACE__.'\SecurityContext class is deprecated since version 2.6 and will be removed in 3.0. Use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage or Symfony\Component\Security\Core\Authorization\AuthorizationChecker instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
-use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
-use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
-use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface;
-use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
-use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
-
-/**
- * SecurityContext is the main entry point of the Security component.
- *
- * It gives access to the token representing the current user authentication.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- *
- * @deprecated since version 2.6, to be removed in 3.0.
- */
-class SecurityContext implements SecurityContextInterface
-{
- /**
- * @var TokenStorageInterface
- */
- private $tokenStorage;
-
- /**
- * @var AuthorizationCheckerInterface
- */
- private $authorizationChecker;
-
- /**
- * For backwards compatibility, the signature of sf <2.6 still works.
- *
- * @param TokenStorageInterface|AuthenticationManagerInterface $tokenStorage
- * @param AuthorizationCheckerInterface|AccessDecisionManagerInterface $authorizationChecker
- * @param bool $alwaysAuthenticate only applicable with old signature
- */
- public function __construct($tokenStorage, $authorizationChecker, $alwaysAuthenticate = false)
- {
- $oldSignature = $tokenStorage instanceof AuthenticationManagerInterface && $authorizationChecker instanceof AccessDecisionManagerInterface;
- $newSignature = $tokenStorage instanceof TokenStorageInterface && $authorizationChecker instanceof AuthorizationCheckerInterface;
-
- // confirm possible signatures
- if (!$oldSignature && !$newSignature) {
- throw new \BadMethodCallException('Unable to construct SecurityContext, please provide the correct arguments');
- }
-
- if ($oldSignature) {
- // renamed for clarity
- $authenticationManager = $tokenStorage;
- $accessDecisionManager = $authorizationChecker;
- $tokenStorage = new TokenStorage();
- $authorizationChecker = new AuthorizationChecker($tokenStorage, $authenticationManager, $accessDecisionManager, $alwaysAuthenticate);
- }
-
- $this->tokenStorage = $tokenStorage;
- $this->authorizationChecker = $authorizationChecker;
- }
-
- /**
- * @deprecated since version 2.6, to be removed in 3.0. Use TokenStorageInterface::getToken() instead.
- *
- * {@inheritdoc}
- */
- public function getToken()
- {
- return $this->tokenStorage->getToken();
- }
-
- /**
- * @deprecated since version 2.6, to be removed in 3.0. Use TokenStorageInterface::setToken() instead.
- *
- * {@inheritdoc}
- */
- public function setToken(TokenInterface $token = null)
- {
- return $this->tokenStorage->setToken($token);
- }
-
- /**
- * @deprecated since version 2.6, to be removed in 3.0. Use AuthorizationCheckerInterface::isGranted() instead.
- *
- * {@inheritdoc}
- */
- public function isGranted($attributes, $object = null)
- {
- return $this->authorizationChecker->isGranted($attributes, $object);
- }
-}
diff --git a/Core/SecurityContextInterface.php b/Core/SecurityContextInterface.php
deleted file mode 100644
index 73edd23..0000000
--- a/Core/SecurityContextInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\Core;
-
-use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
-use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
-
-/**
- * The SecurityContextInterface.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- *
- * @deprecated since version 2.6, to be removed in 3.0.
- */
-interface SecurityContextInterface extends TokenStorageInterface, AuthorizationCheckerInterface
-{
- const ACCESS_DENIED_ERROR = Security::ACCESS_DENIED_ERROR;
- const AUTHENTICATION_ERROR = Security::AUTHENTICATION_ERROR;
- const LAST_USERNAME = Security::LAST_USERNAME;
- const MAX_USERNAME_LENGTH = Security::MAX_USERNAME_LENGTH;
-}
diff --git a/Core/Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php b/Core/Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php
index fbb4d73..da3068f 100644
--- a/Core/Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php
+++ b/Core/Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php
@@ -11,10 +11,13 @@
namespace Symfony\Component\Security\Core\Tests\Authentication\Provider;
+use Symfony\Component\Ldap\LdapInterface;
use Symfony\Component\Security\Core\Authentication\Provider\LdapBindAuthenticationProvider;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\User\User;
use Symfony\Component\Ldap\Exception\ConnectionException;
+use Symfony\Component\Security\Core\User\UserCheckerInterface;
+use Symfony\Component\Security\Core\User\UserProviderInterface;
/**
* @requires extension ldap
@@ -44,14 +47,14 @@ class LdapBindAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
*/
public function testBindFailureShouldThrowAnException()
{
- $userProvider = $this->getMock('Symfony\Component\Security\Core\User\UserProviderInterface');
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $userProvider = $this->getMock(UserProviderInterface::class);
+ $ldap = $this->getMock(LdapInterface::class);
$ldap
->expects($this->once())
->method('bind')
->will($this->throwException(new ConnectionException()))
;
- $userChecker = $this->getMock('Symfony\Component\Security\Core\User\UserCheckerInterface');
+ $userChecker = $this->getMock(UserCheckerInterface::class);
$provider = new LdapBindAuthenticationProvider($userProvider, $userChecker, 'key', $ldap);
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
@@ -62,15 +65,15 @@ class LdapBindAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
public function testRetrieveUser()
{
- $userProvider = $this->getMock('Symfony\Component\Security\Core\User\UserProviderInterface');
+ $userProvider = $this->getMock(UserProviderInterface::class);
$userProvider
->expects($this->once())
->method('loadUserByUsername')
->with('foo')
;
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $ldap = $this->getMock(LdapInterface::class);
- $userChecker = $this->getMock('Symfony\Component\Security\Core\User\UserCheckerInterface');
+ $userChecker = $this->getMock(UserCheckerInterface::class);
$provider = new LdapBindAuthenticationProvider($userProvider, $userChecker, 'key', $ldap);
$reflection = new \ReflectionMethod($provider, 'retrieveUser');
diff --git a/Core/Tests/Authorization/AccessDecisionManagerTest.php b/Core/Tests/Authorization/AccessDecisionManagerTest.php
index 412af91..0e77c75 100644
--- a/Core/Tests/Authorization/AccessDecisionManagerTest.php
+++ b/Core/Tests/Authorization/AccessDecisionManagerTest.php
@@ -17,42 +17,6 @@ use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
class AccessDecisionManagerTest extends \PHPUnit_Framework_TestCase
{
/**
- * @group legacy
- */
- public function testSupportsClass()
- {
- $manager = new AccessDecisionManager(array(
- $this->getVoterSupportsClass(true),
- $this->getVoterSupportsClass(false),
- ));
- $this->assertTrue($manager->supportsClass('FooClass'));
-
- $manager = new AccessDecisionManager(array(
- $this->getVoterSupportsClass(false),
- $this->getVoterSupportsClass(false),
- ));
- $this->assertFalse($manager->supportsClass('FooClass'));
- }
-
- /**
- * @group legacy
- */
- public function testSupportsAttribute()
- {
- $manager = new AccessDecisionManager(array(
- $this->getVoterSupportsAttribute(true),
- $this->getVoterSupportsAttribute(false),
- ));
- $this->assertTrue($manager->supportsAttribute('foo'));
-
- $manager = new AccessDecisionManager(array(
- $this->getVoterSupportsAttribute(false),
- $this->getVoterSupportsAttribute(false),
- ));
- $this->assertFalse($manager->supportsAttribute('foo'));
- }
-
- /**
* @expectedException \InvalidArgumentException
*/
public function testSetUnsupportedStrategy()
@@ -173,24 +137,4 @@ class AccessDecisionManagerTest extends \PHPUnit_Framework_TestCase
return $voter;
}
-
- protected function getVoterSupportsClass($ret)
- {
- $voter = $this->getMock('Symfony\Component\Security\Core\Authorization\Voter\VoterInterface');
- $voter->expects($this->any())
- ->method('supportsClass')
- ->will($this->returnValue($ret));
-
- return $voter;
- }
-
- protected function getVoterSupportsAttribute($ret)
- {
- $voter = $this->getMock('Symfony\Component\Security\Core\Authorization\Voter\VoterInterface');
- $voter->expects($this->any())
- ->method('supportsAttribute')
- ->will($this->returnValue($ret));
-
- return $voter;
- }
}
diff --git a/Core/Tests/Authorization/DebugAccessDecisionManagerTest.php b/Core/Tests/Authorization/DebugAccessDecisionManagerTest.php
new file mode 100644
index 0000000..f90f776
--- /dev/null
+++ b/Core/Tests/Authorization/DebugAccessDecisionManagerTest.php
@@ -0,0 +1,43 @@
+<?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\Core\Tests\Authorization;
+
+use Symfony\Component\Security\Core\Authorization\AccessDecisionManager;
+use Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager;
+use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
+
+class DebugAccessDecisionManagerTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provideObjectsAndLogs
+ */
+ public function testDecideLog($expectedLog, $object)
+ {
+ $adm = new DebugAccessDecisionManager(new AccessDecisionManager());
+ $adm->decide($this->getMock(TokenInterface::class), array('ATTRIBUTE_1'), $object);
+
+ $this->assertSame($expectedLog, $adm->getDecisionLog());
+ }
+
+ public function provideObjectsAndLogs()
+ {
+ $object = new \stdClass();
+
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'NULL', 'result' => false)), null);
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'boolean (true)', 'result' => false)), true);
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'string (jolie string)', 'result' => false)), 'jolie string');
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'integer (12345)', 'result' => false)), 12345);
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'resource', 'result' => false)), fopen(__FILE__, 'r'));
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => 'array', 'result' => false)), array());
+ yield array(array(array('attributes' => array('ATTRIBUTE_1'), 'object' => sprintf('stdClass (object hash: %s)', spl_object_hash($object)), 'result' => false)), $object);
+ }
+}
diff --git a/Core/Tests/Authorization/Voter/AbstractVoterTest.php b/Core/Tests/Authorization/Voter/AbstractVoterTest.php
deleted file mode 100644
index b537c1b..0000000
--- a/Core/Tests/Authorization/Voter/AbstractVoterTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\Core\Tests\Authorization\Voter;
-
-use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
-
-/**
- * @group legacy
- */
-class AbstractVoterTest extends \PHPUnit_Framework_TestCase
-{
- protected $token;
-
- protected function setUp()
- {
- $this->token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
- }
-
- public function getTests()
- {
- return array(
- array(array('EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if attribute and class are supported and attribute grants access'),
- array(array('CREATE'), VoterInterface::ACCESS_DENIED, new \stdClass(), 'ACCESS_DENIED if attribute and class are supported and attribute does not grant access'),
-
- array(array('DELETE', 'EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if one attribute is supported and grants access'),
- array(array('DELETE', 'CREATE'), VoterInterface::ACCESS_DENIED, new \stdClass(), 'ACCESS_DENIED if one attribute is supported and denies access'),
-
- array(array('CREATE', 'EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if one attribute grants access'),
-
- array(array('DELETE'), VoterInterface::ACCESS_ABSTAIN, new \stdClass(), 'ACCESS_ABSTAIN if no attribute is supported'),
-
- array(array('EDIT'), VoterInterface::ACCESS_ABSTAIN, $this, 'ACCESS_ABSTAIN if class is not supported'),
-
- array(array('EDIT'), VoterInterface::ACCESS_ABSTAIN, null, 'ACCESS_ABSTAIN if object is null'),
-
- array(array(), VoterInterface::ACCESS_ABSTAIN, new \stdClass(), 'ACCESS_ABSTAIN if no attributes were provided'),
- );
- }
-
- /**
- * @dataProvider getTests
- */
- public function testVote(array $attributes, $expectedVote, $object, $message)
- {
- $voter = new Fixtures\MyVoter();
-
- $this->assertEquals($expectedVote, $voter->vote($this->token, $object, $attributes), $message);
- }
-}
diff --git a/Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php b/Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php
index 4679c0f..60e2a19 100644
--- a/Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php
+++ b/Core/Tests/Authorization/Voter/AuthenticatedVoterTest.php
@@ -17,12 +17,6 @@ use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
class AuthenticatedVoterTest extends \PHPUnit_Framework_TestCase
{
- public function testSupportsClass()
- {
- $voter = new AuthenticatedVoter($this->getResolver());
- $this->assertTrue($voter->supportsClass('stdClass'));
- }
-
/**
* @dataProvider getVoteTests
*/
diff --git a/Core/Tests/Authorization/Voter/ExpressionVoterTest.php b/Core/Tests/Authorization/Voter/ExpressionVoterTest.php
index dc8ea79..5296296 100644
--- a/Core/Tests/Authorization/Voter/ExpressionVoterTest.php
+++ b/Core/Tests/Authorization/Voter/ExpressionVoterTest.php
@@ -17,15 +17,6 @@ use Symfony\Component\Security\Core\Role\Role;
class ExpressionVoterTest extends \PHPUnit_Framework_TestCase
{
- public function testSupportsAttribute()
- {
- $expression = $this->createExpression();
- $expressionLanguage = $this->getMock('Symfony\Component\Security\Core\Authorization\ExpressionLanguage');
- $voter = new ExpressionVoter($expressionLanguage, $this->createTrustResolver(), $this->createRoleHierarchy());
-
- $this->assertTrue($voter->supportsAttribute($expression));
- }
-
/**
* @dataProvider getVoteTests
*/
diff --git a/Core/Tests/Authorization/Voter/Fixtures/MyVoter.php b/Core/Tests/Authorization/Voter/Fixtures/MyVoter.php
deleted file mode 100644
index b75f798..0000000
--- a/Core/Tests/Authorization/Voter/Fixtures/MyVoter.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Symfony\Component\Security\Core\Tests\Authorization\Voter\Fixtures;
-
-use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-use Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter;
-
-/**
- * @group legacy
- */
-class MyVoter extends AbstractVoter
-{
- protected function getSupportedClasses()
- {
- return array('stdClass');
- }
-
- protected function getSupportedAttributes()
- {
- return array('EDIT', 'CREATE');
- }
-
- protected function isGranted($attribute, $object, $user = null)
- {
- return 'EDIT' === $attribute;
- }
-}
diff --git a/Core/Tests/Authorization/Voter/RoleVoterTest.php b/Core/Tests/Authorization/Voter/RoleVoterTest.php
index 03ab2da..9982bdf 100644
--- a/Core/Tests/Authorization/Voter/RoleVoterTest.php
+++ b/Core/Tests/Authorization/Voter/RoleVoterTest.php
@@ -17,13 +17,6 @@ use Symfony\Component\Security\Core\Role\Role;
class RoleVoterTest extends \PHPUnit_Framework_TestCase
{
- public function testSupportsClass()
- {
- $voter = new RoleVoter();
-
- $this->assertTrue($voter->supportsClass('Foo'));
- }
-
/**
* @dataProvider getVoteTests
*/
diff --git a/Core/Tests/LegacySecurityContextTest.php b/Core/Tests/LegacySecurityContextTest.php
deleted file mode 100644
index 4502261..0000000
--- a/Core/Tests/LegacySecurityContextTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?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\Core\Tests;
-
-use Symfony\Component\Security\Core\Security;
-use Symfony\Component\Security\Core\SecurityContext;
-use Symfony\Component\Security\Core\SecurityContextInterface;
-
-/**
- * @group legacy
- */
-class LegacySecurityContextTest extends \PHPUnit_Framework_TestCase
-{
- private $tokenStorage;
- private $authorizationChecker;
- private $securityContext;
-
- protected function setUp()
- {
- $this->tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
- $this->authorizationChecker = $this->getMock('Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface');
- $this->securityContext = new SecurityContext($this->tokenStorage, $this->authorizationChecker);
- }
-
- public function testGetTokenDelegation()
- {
- $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
-
- $this->tokenStorage
- ->expects($this->once())
- ->method('getToken')
- ->will($this->returnValue($token));
-
- $this->assertTrue($token === $this->securityContext->getToken());
- }
-
- public function testSetTokenDelegation()
- {
- $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
-
- $this->tokenStorage
- ->expects($this->once())
- ->method('setToken')
- ->with($token);
-
- $this->securityContext->setToken($token);
- }
-
- /**
- * @dataProvider isGrantedDelegationProvider
- */
- public function testIsGrantedDelegation($attributes, $object, $return)
- {
- $this->authorizationChecker
- ->expects($this->once())
- ->method('isGranted')
- ->with($attributes, $object)
- ->will($this->returnValue($return));
-
- $this->assertEquals($return, $this->securityContext->isGranted($attributes, $object));
- }
-
- public function isGrantedDelegationProvider()
- {
- return array(
- array(array(), new \stdClass(), true),
- array(array('henk'), new \stdClass(), false),
- array(null, new \stdClass(), false),
- array('henk', null, true),
- array(array(1), 'henk', true),
- );
- }
-
- /**
- * Test dedicated to check if the backwards compatibility is still working.
- */
- public function testOldConstructorSignature()
- {
- $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
- $accessDecisionManager = $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface');
- new SecurityContext($authenticationManager, $accessDecisionManager);
- }
-
- /**
- * @dataProvider oldConstructorSignatureFailuresProvider
- * @expectedException \BadMethodCallException
- */
- public function testOldConstructorSignatureFailures($first, $second)
- {
- new SecurityContext($first, $second);
- }
-
- public function oldConstructorSignatureFailuresProvider()
- {
- $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
- $authorizationChecker = $this->getMock('Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface');
- $authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
- $accessDecisionManager = $this->getMock('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface');
-
- return array(
- array(new \stdClass(), new \stdClass()),
- array($tokenStorage, $accessDecisionManager),
- array($accessDecisionManager, $tokenStorage),
- array($authorizationChecker, $accessDecisionManager),
- array($accessDecisionManager, $authorizationChecker),
- array($tokenStorage, $accessDecisionManager),
- array($authenticationManager, $authorizationChecker),
- array('henk', 'hans'),
- array(null, false),
- array(true, null),
- );
- }
-
- /**
- * Test if the BC Layer is working as intended.
- */
- public function testConstantSync()
- {
- $this->assertSame(Security::ACCESS_DENIED_ERROR, SecurityContextInterface::ACCESS_DENIED_ERROR);
- $this->assertSame(Security::AUTHENTICATION_ERROR, SecurityContextInterface::AUTHENTICATION_ERROR);
- $this->assertSame(Security::LAST_USERNAME, SecurityContextInterface::LAST_USERNAME);
- }
-}
diff --git a/Core/Tests/User/LdapUserProviderTest.php b/Core/Tests/User/LdapUserProviderTest.php
index 9b126e9..b942e76 100644
--- a/Core/Tests/User/LdapUserProviderTest.php
+++ b/Core/Tests/User/LdapUserProviderTest.php
@@ -11,6 +11,10 @@
namespace Symfony\Component\Security\Core\Tests\User;
+use Symfony\Component\Ldap\Adapter\CollectionInterface;
+use Symfony\Component\Ldap\Adapter\QueryInterface;
+use Symfony\Component\Ldap\Entry;
+use Symfony\Component\Ldap\LdapInterface;
use Symfony\Component\Security\Core\User\LdapUserProvider;
use Symfony\Component\Ldap\Exception\ConnectionException;
@@ -24,7 +28,7 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
*/
public function testLoadUserByUsernameFailsIfCantConnectToLdap()
{
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $ldap = $this->getMock(LdapInterface::class);
$ldap
->expects($this->once())
->method('bind')
@@ -40,12 +44,29 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
*/
public function testLoadUserByUsernameFailsIfNoLdapEntries()
{
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(0))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
$ldap
->expects($this->once())
->method('escape')
->will($this->returnValue('foo'))
;
+ $ldap
+ ->expects($this->once())
+ ->method('query')
+ ->will($this->returnValue($query))
+ ;
$provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com');
$provider->loadUserByUsername('foo');
@@ -56,7 +77,19 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
*/
public function testLoadUserByUsernameFailsIfMoreThanOneLdapEntry()
{
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(2))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
$ldap
->expects($this->once())
->method('escape')
@@ -64,21 +97,42 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
;
$ldap
->expects($this->once())
- ->method('find')
- ->will($this->returnValue(array(
- array(),
- array(),
- 'count' => 2,
- )))
+ ->method('query')
+ ->will($this->returnValue($query))
;
$provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com');
$provider->loadUserByUsername('foo');
}
- public function testSuccessfulLoadUserByUsername()
+ /**
+ * @expectedException \Symfony\Component\Security\Core\Exception\InvalidArgumentException
+ */
+ public function testLoadUserByUsernameFailsIfMoreThanOneLdapPasswordsInEntry()
{
- $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface');
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
+ $result
+ ->expects($this->once())
+ ->method('offsetGet')
+ ->with(0)
+ ->will($this->returnValue(new Entry('foo', array(
+ 'sAMAccountName' => array('foo'),
+ 'userpassword' => array('bar', 'baz'),
+ )
+ )))
+ ;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(1))
+ ;
$ldap
->expects($this->once())
->method('escape')
@@ -86,15 +140,96 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
;
$ldap
->expects($this->once())
- ->method('find')
- ->will($this->returnValue(array(
- array(
- 'sAMAccountName' => 'foo',
- 'userpassword' => 'bar',
- ),
- 'count' => 1,
+ ->method('query')
+ ->will($this->returnValue($query))
+ ;
+
+ $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com', null, null, array(), 'sAMAccountName', '({uid_key}={username})', 'userpassword');
+ $this->assertInstanceOf(
+ 'Symfony\Component\Security\Core\User\User',
+ $provider->loadUserByUsername('foo')
+ );
+ }
+
+ /**
+ * @expectedException \Symfony\Component\Security\Core\Exception\InvalidArgumentException
+ */
+ public function testLoadUserByUsernameFailsIfEntryHasNoPasswordAttribute()
+ {
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
+ $result
+ ->expects($this->once())
+ ->method('offsetGet')
+ ->with(0)
+ ->will($this->returnValue(new Entry('foo', array(
+ 'sAMAccountName' => array('foo'),
+ )
)))
;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(1))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('escape')
+ ->will($this->returnValue('foo'))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('query')
+ ->will($this->returnValue($query))
+ ;
+
+ $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com', null, null, array(), 'sAMAccountName', '({uid_key}={username})', 'userpassword');
+ $this->assertInstanceOf(
+ 'Symfony\Component\Security\Core\User\User',
+ $provider->loadUserByUsername('foo')
+ );
+ }
+
+ public function testLoadUserByUsernameIsSuccessfulWithoutPasswordAttribute()
+ {
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
+ $result
+ ->expects($this->once())
+ ->method('offsetGet')
+ ->with(0)
+ ->will($this->returnValue(new Entry('foo', array(
+ 'sAMAccountName' => array('foo'),
+ )
+ )))
+ ;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(1))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('escape')
+ ->will($this->returnValue('foo'))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('query')
+ ->will($this->returnValue($query))
+ ;
$provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com');
$this->assertInstanceOf(
@@ -102,4 +237,47 @@ class LdapUserProviderTest extends \PHPUnit_Framework_TestCase
$provider->loadUserByUsername('foo')
);
}
+
+ public function testLoadUserByUsernameIsSuccessfulWithPasswordAttribute()
+ {
+ $result = $this->getMock(CollectionInterface::class);
+ $query = $this->getMock(QueryInterface::class);
+ $query
+ ->expects($this->once())
+ ->method('execute')
+ ->will($this->returnValue($result))
+ ;
+ $ldap = $this->getMock(LdapInterface::class);
+ $result
+ ->expects($this->once())
+ ->method('offsetGet')
+ ->with(0)
+ ->will($this->returnValue(new Entry('foo', array(
+ 'sAMAccountName' => array('foo'),
+ 'userpassword' => array('bar'),
+ )
+ )))
+ ;
+ $result
+ ->expects($this->once())
+ ->method('count')
+ ->will($this->returnValue(1))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('escape')
+ ->will($this->returnValue('foo'))
+ ;
+ $ldap
+ ->expects($this->once())
+ ->method('query')
+ ->will($this->returnValue($query))
+ ;
+
+ $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com', null, null, array(), 'sAMAccountName', '({uid_key}={username})', 'userpassword');
+ $this->assertInstanceOf(
+ 'Symfony\Component\Security\Core\User\User',
+ $provider->loadUserByUsername('foo')
+ );
+ }
}
diff --git a/Core/Tests/Util/ClassUtilsTest.php b/Core/Tests/Util/ClassUtilsTest.php
deleted file mode 100644
index b048206..0000000
--- a/Core/Tests/Util/ClassUtilsTest.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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\Core\Tests\Util
-{
- use Symfony\Component\Security\Core\Util\ClassUtils;
-
- /**
- * @group legacy
- */
- class ClassUtilsTest extends \PHPUnit_Framework_TestCase
- {
- public static function dataGetClass()
- {
- return array(
- array('stdClass', 'stdClass'),
- array('Symfony\Component\Security\Core\Util\ClassUtils', 'Symfony\Component\Security\Core\Util\ClassUtils'),
- array('MyProject\Proxies\__CG__\stdClass', 'stdClass'),
- array('MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__\stdClass', 'stdClass'),
- array('MyProject\Proxies\__CG__\Symfony\Component\Security\Core\Tests\Util\ChildObject', 'Symfony\Component\Security\Core\Tests\Util\ChildObject'),
- array(new TestObject(), 'Symfony\Component\Security\Core\Tests\Util\TestObject'),
- array(new \Acme\DemoBundle\Proxy\__CG__\Symfony\Component\Security\Core\Tests\Util\TestObject(), 'Symfony\Component\Security\Core\Tests\Util\TestObject'),
- );
- }
-
- /**
- * @dataProvider dataGetClass
- */
- public function testGetRealClass($object, $expectedClassName)
- {
- $this->assertEquals($expectedClassName, ClassUtils::getRealClass($object));
- }
- }
-
- class TestObject
- {
- }
-}
-
-namespace Acme\DemoBundle\Proxy\__CG__\Symfony\Component\Security\Core\Tests\Util
-{
- class TestObject extends \Symfony\Component\Security\Core\Tests\Util\TestObject
- {
- }
-}
diff --git a/Core/Tests/Util/StringUtilsTest.php b/Core/Tests/Util/StringUtilsTest.php
deleted file mode 100644
index 78d9b05..0000000
--- a/Core/Tests/Util/StringUtilsTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\Core\Tests\Util;
-
-use Symfony\Component\Security\Core\Util\StringUtils;
-
-/**
- * Data from PHP.net's hash_equals tests.
- *
- * @group legacy
- */
-class StringUtilsTest extends \PHPUnit_Framework_TestCase
-{
- public function dataProviderTrue()
- {
- return array(
- array('same', 'same'),
- array('', ''),
- array(123, 123),
- array(null, ''),
- array(null, null),
- );
- }
-
- public function dataProviderFalse()
- {
- return array(
- array('not1same', 'not2same'),
- array('short', 'longer'),
- array('longer', 'short'),
- array('', 'notempty'),
- array('notempty', ''),
- array(123, 'NaN'),
- array('NaN', 123),
- array(null, 123),
- );
- }
-
- /**
- * @dataProvider dataProviderTrue
- */
- public function testEqualsTrue($known, $user)
- {
- $this->assertTrue(StringUtils::equals($known, $user));
- }
-
- /**
- * @dataProvider dataProviderFalse
- */
- public function testEqualsFalse($known, $user)
- {
- $this->assertFalse(StringUtils::equals($known, $user));
- }
-}
diff --git a/Core/Tests/Validator/Constraints/LegacyUserPasswordValidatorTest.php b/Core/Tests/Validator/Constraints/LegacyUserPasswordValidatorTest.php
deleted file mode 100644
index f7da8c0..0000000
--- a/Core/Tests/Validator/Constraints/LegacyUserPasswordValidatorTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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\Core\Tests\Validator\Constraints;
-
-use Symfony\Component\Validator\Validation;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @group legacy
- */
-class LegacyUserPasswordValidatorTest extends UserPasswordValidatorTest
-{
- protected function getApiVersion()
- {
- return Validation::API_VERSION_2_5_BC;
- }
-}
diff --git a/Core/User/LdapUserProvider.php b/Core/User/LdapUserProvider.php
index 1593564..fc42419 100644
--- a/Core/User/LdapUserProvider.php
+++ b/Core/User/LdapUserProvider.php
@@ -11,10 +11,12 @@
namespace Symfony\Component\Security\Core\User;
+use Symfony\Component\Ldap\Entry;
+use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Ldap\Exception\ConnectionException;
-use Symfony\Component\Ldap\LdapClientInterface;
+use Symfony\Component\Ldap\LdapInterface;
/**
* LdapUserProvider is a simple user provider on top of ldap.
@@ -30,17 +32,19 @@ class LdapUserProvider implements UserProviderInterface
private $searchPassword;
private $defaultRoles;
private $defaultSearch;
+ private $passwordAttribute;
/**
- * @param LdapClientInterface $ldap
- * @param string $baseDn
- * @param string $searchDn
- * @param string $searchPassword
- * @param array $defaultRoles
- * @param string $uidKey
- * @param string $filter
+ * @param LdapInterface $ldap
+ * @param string $baseDn
+ * @param string $searchDn
+ * @param string $searchPassword
+ * @param array $defaultRoles
+ * @param string $uidKey
+ * @param string $filter
+ * @param string $passwordAttribute
*/
- public function __construct(LdapClientInterface $ldap, $baseDn, $searchDn = null, $searchPassword = null, array $defaultRoles = array(), $uidKey = 'sAMAccountName', $filter = '({uid_key}={username})')
+ public function __construct(LdapInterface $ldap, $baseDn, $searchDn = null, $searchPassword = null, array $defaultRoles = array(), $uidKey = 'sAMAccountName', $filter = '({uid_key}={username})', $passwordAttribute = null)
{
$this->ldap = $ldap;
$this->baseDn = $baseDn;
@@ -48,6 +52,7 @@ class LdapUserProvider implements UserProviderInterface
$this->searchPassword = $searchPassword;
$this->defaultRoles = $defaultRoles;
$this->defaultSearch = str_replace('{uid_key}', $uidKey, $filter);
+ $this->passwordAttribute = $passwordAttribute;
}
/**
@@ -57,33 +62,25 @@ class LdapUserProvider implements UserProviderInterface
{
try {
$this->ldap->bind($this->searchDn, $this->searchPassword);
- $username = $this->ldap->escape($username, '', LDAP_ESCAPE_FILTER);
+ $username = $this->ldap->escape($username, '', LdapInterface::ESCAPE_FILTER);
$query = str_replace('{username}', $username, $this->defaultSearch);
- $search = $this->ldap->find($this->baseDn, $query);
+ $search = $this->ldap->query($this->baseDn, $query);
} catch (ConnectionException $e) {
throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username), 0, $e);
}
- if (!$search) {
+ $entries = $search->execute();
+ $count = count($entries);
+
+ if (!$count) {
throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username));
}
- if ($search['count'] > 1) {
+ if ($count > 1) {
throw new UsernameNotFoundException('More than one user found');
}
- $user = $search[0];
-
- return $this->loadUser($username, $user);
- }
-
- public function loadUser($username, $user)
- {
- $password = isset($user['userpassword']) ? $user['userpassword'] : null;
-
- $roles = $this->defaultRoles;
-
- return new User($username, $password, $roles);
+ return $this->loadUser($username, $entries[0]);
}
/**
@@ -105,4 +102,43 @@ class LdapUserProvider implements UserProviderInterface
{
return $class === 'Symfony\Component\Security\Core\User\User';
}
+
+ /**
+ * Loads a user from an LDAP entry.
+ *
+ * @param string $username
+ * @param Entry $entry
+ *
+ * @return User
+ */
+ protected function loadUser($username, Entry $entry)
+ {
+ $password = $this->getPassword($entry);
+
+ return new User($username, $password, $this->defaultRoles);
+ }
+
+ /**
+ * Fetches the password from an LDAP entry.
+ *
+ * @param null|Entry $entry
+ */
+ private function getPassword(Entry $entry)
+ {
+ if (null === $this->passwordAttribute) {
+ return;
+ }
+
+ if (!$entry->hasAttribute($this->passwordAttribute)) {
+ throw new InvalidArgumentException(sprintf('Missing attribute "%s" for user "%s".', $this->passwordAttribute, $entry->getDn()));
+ }
+
+ $values = $entry->getAttribute($this->passwordAttribute);
+
+ if (1 !== count($values)) {
+ throw new InvalidArgumentException(sprintf('Attribute "%s" has multiple values.', $this->passwordAttribute));
+ }
+
+ return $values[0];
+ }
}
diff --git a/Core/Util/ClassUtils.php b/Core/Util/ClassUtils.php
deleted file mode 100644
index 06186ef..0000000
--- a/Core/Util/ClassUtils.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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\Core\Util;
-
-use Symfony\Component\Security\Acl\Util\ClassUtils as AclClassUtils;
-
-@trigger_error('The '.__NAMESPACE__.'\ClassUtils class is deprecated since version 2.8, to be removed in 3.0. Use Symfony\Component\Security\Acl\Util\ClassUtils instead.', E_USER_DEPRECATED);
-
-/**
- * Class related functionality for objects that
- * might or might not be proxy objects at the moment.
- *
- * @deprecated ClassUtils is deprecated since version 2.8, to be removed in 3.0. Use Acl ClassUtils instead.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Johannes Schmitt <schmittjoh@gmail.com>
- */
-class ClassUtils
-{
- /**
- * Marker for Proxy class names.
- *
- * @var string
- */
- const MARKER = '__CG__';
-
- /**
- * Length of the proxy marker.
- *
- * @var int
- */
- const MARKER_LENGTH = 6;
-
- /**
- * This class should not be instantiated.
- */
- private function __construct()
- {
- }
-
- /**
- * Gets the real class name of a class name that could be a proxy.
- *
- * @param string|object $object
- *
- * @return string
- */
- public static function getRealClass($object)
- {
- if (class_exists('Symfony\Component\Security\Acl\Util\ClassUtils')) {
- return AclClassUtils::getRealClass($object);
- }
-
- // fallback in case security-acl is not installed
- $class = is_object($object) ? get_class($object) : $object;
-
- if (false === $pos = strrpos($class, '\\'.self::MARKER.'\\')) {
- return $class;
- }
-
- return substr($class, $pos + self::MARKER_LENGTH + 2);
- }
-}
diff --git a/Core/Util/SecureRandom.php b/Core/Util/SecureRandom.php
deleted file mode 100644
index 06ed893..0000000
--- a/Core/Util/SecureRandom.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Core\Util;
-
-@trigger_error('The '.__NAMESPACE__.'\SecureRandom class is deprecated since version 2.8 and will be removed in 3.0. Use the random_bytes() function instead.', E_USER_DEPRECATED);
-
-/**
- * A secure random number generator implementation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- *
- * @deprecated since version 2.8, to be removed in 3.0. Use the random_bytes function instead
- */
-final class SecureRandom implements SecureRandomInterface
-{
- /**
- * {@inheritdoc}
- */
- public function nextBytes($nbBytes)
- {
- return random_bytes($nbBytes);
- }
-}
diff --git a/Core/Util/SecureRandomInterface.php b/Core/Util/SecureRandomInterface.php
deleted file mode 100644
index df5509b..0000000
--- a/Core/Util/SecureRandomInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Core\Util;
-
-/**
- * Interface that needs to be implemented by all secure random number generators.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.8, to be removed in 3.0. Use the random_bytes function instead
- */
-interface SecureRandomInterface
-{
- /**
- * Generates the specified number of secure random bytes.
- *
- * @param int $nbBytes
- *
- * @return string
- */
- public function nextBytes($nbBytes);
-}
diff --git a/Core/Util/StringUtils.php b/Core/Util/StringUtils.php
deleted file mode 100644
index bb0c8b2..0000000
--- a/Core/Util/StringUtils.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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\Core\Util;
-
-@trigger_error('The '.__NAMESPACE__.'\\StringUtils class is deprecated since version 2.8 and will be removed in 3.0. Use hash_equals() instead.', E_USER_DEPRECATED);
-
-use Symfony\Polyfill\Util\Binary;
-
-/**
- * String utility functions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 2.8, to be removed in 3.0.
- */
-class StringUtils
-{
- /**
- * This class should not be instantiated.
- */
- private function __construct()
- {
- }
-
- /**
- * Compares two strings.
- *
- * This method implements a constant-time algorithm to compare strings.
- * Regardless of the used implementation, it will leak length information.
- *
- * @param string $knownString The string of known length to compare against
- * @param string $userInput The string that the user can control
- *
- * @return bool true if the two strings are the same, false otherwise
- */
- public static function equals($knownString, $userInput)
- {
- // Avoid making unnecessary duplications of secret data
- if (!is_string($knownString)) {
- $knownString = (string) $knownString;
- }
-
- if (!is_string($userInput)) {
- $userInput = (string) $userInput;
- }
-
- return hash_equals($knownString, $userInput);
- }
-
- /**
- * Returns the number of bytes in a string.
- *
- * @param string $string The string whose length we wish to obtain
- *
- * @return int
- */
- public static function safeStrlen($string)
- {
- return Binary::strlen($string);
- }
-}
diff --git a/Core/composer.json b/Core/composer.json
index 3362971..e2915b0 100644
--- a/Core/composer.json
+++ b/Core/composer.json
@@ -16,18 +16,16 @@
}
],
"require": {
- "php": ">=5.3.9",
- "symfony/polyfill-php55": "~1.0",
+ "php": ">=5.5.9",
"symfony/polyfill-php56": "~1.0",
- "symfony/polyfill-php70": "~1.0",
"symfony/polyfill-util": "~1.0"
},
"require-dev": {
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/expression-language": "~2.6|~3.0.0",
- "symfony/http-foundation": "~2.4|~3.0.0",
- "symfony/ldap": "~2.8|~3.0.0",
- "symfony/validator": "~2.5,>=2.5.9|~3.0.0",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/http-foundation": "~2.8|~3.0",
+ "symfony/ldap": "~3.1",
+ "symfony/validator": "~2.8|~3.0",
"psr/log": "~1.0"
},
"suggest": {
@@ -46,7 +44,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
}
}
diff --git a/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php b/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php
index e4ea80c..320dfc8 100644
--- a/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php
+++ b/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php
@@ -28,11 +28,6 @@ class UriSafeTokenGeneratorTest extends \PHPUnit_Framework_TestCase
private static $bytes;
/**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- private $random;
-
- /**
* @var UriSafeTokenGenerator
*/
private $generator;
@@ -49,7 +44,6 @@ class UriSafeTokenGeneratorTest extends \PHPUnit_Framework_TestCase
protected function tearDown()
{
- $this->random = null;
$this->generator = null;
}
diff --git a/Csrf/Tests/TokenStorage/NativeSessionTokenStorageTest.php b/Csrf/Tests/TokenStorage/NativeSessionTokenStorageTest.php
index 7d3a537..ef49f2f 100644
--- a/Csrf/Tests/TokenStorage/NativeSessionTokenStorageTest.php
+++ b/Csrf/Tests/TokenStorage/NativeSessionTokenStorageTest.php
@@ -50,9 +50,6 @@ class NativeSessionTokenStorageTest extends \PHPUnit_Framework_TestCase
$this->assertSame(array(self::SESSION_NAMESPACE => array('token_id' => 'TOKEN')), $_SESSION);
}
- /**
- * @requires PHP 5.4
- */
public function testStoreTokenInClosedSessionWithExistingSessionId()
{
session_id('foobar');
diff --git a/Csrf/TokenGenerator/UriSafeTokenGenerator.php b/Csrf/TokenGenerator/UriSafeTokenGenerator.php
index 432adf2..fb3f7e8 100644
--- a/Csrf/TokenGenerator/UriSafeTokenGenerator.php
+++ b/Csrf/TokenGenerator/UriSafeTokenGenerator.php
@@ -11,8 +11,6 @@
namespace Symfony\Component\Security\Csrf\TokenGenerator;
-use Symfony\Component\Security\Core\Util\SecureRandomInterface;
-
/**
* Generates CSRF tokens.
*
@@ -34,13 +32,7 @@ class UriSafeTokenGenerator implements TokenGeneratorInterface
*/
public function __construct($entropy = 256)
{
- if ($entropy instanceof SecureRandomInterface || func_num_args() === 2) {
- @trigger_error('The '.__METHOD__.' method now requires the entropy to be given as the first argument. The SecureRandomInterface will be removed in 3.0.', E_USER_DEPRECATED);
-
- $this->entropy = func_num_args() === 2 ? func_get_arg(1) : 256;
- } else {
- $this->entropy = $entropy;
- }
+ $this->entropy = $entropy;
}
/**
diff --git a/Csrf/TokenStorage/NativeSessionTokenStorage.php b/Csrf/TokenStorage/NativeSessionTokenStorage.php
index 71151fa..5ce2774 100644
--- a/Csrf/TokenStorage/NativeSessionTokenStorage.php
+++ b/Csrf/TokenStorage/NativeSessionTokenStorage.php
@@ -108,11 +108,7 @@ class NativeSessionTokenStorage implements TokenStorageInterface
private function startSession()
{
- if (PHP_VERSION_ID >= 50400) {
- if (PHP_SESSION_NONE === session_status()) {
- session_start();
- }
- } elseif (!session_id()) {
+ if (PHP_SESSION_NONE === session_status()) {
session_start();
}
diff --git a/Csrf/composer.json b/Csrf/composer.json
index 4afc7ca..d111fa1 100644
--- a/Csrf/composer.json
+++ b/Csrf/composer.json
@@ -16,13 +16,13 @@
}
],
"require": {
- "php": ">=5.3.9",
+ "php": ">=5.5.9",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.0",
- "symfony/security-core": "~2.4|~3.0.0"
+ "symfony/security-core": "~2.8|~3.0"
},
"require-dev": {
- "symfony/http-foundation": "~2.1|~3.0.0"
+ "symfony/http-foundation": "~2.8|~3.0"
},
"suggest": {
"symfony/http-foundation": "For using the class SessionTokenStorage."
@@ -36,7 +36,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
}
}
diff --git a/Guard/Authenticator/AbstractFormLoginAuthenticator.php b/Guard/Authenticator/AbstractFormLoginAuthenticator.php
index 6d6d14e..f99900b 100644
--- a/Guard/Authenticator/AbstractFormLoginAuthenticator.php
+++ b/Guard/Authenticator/AbstractFormLoginAuthenticator.php
@@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Security;
+use Symfony\Component\Security\Http\Util\TargetPathTrait;
/**
* A base class to make form login authentication easier!
@@ -26,6 +27,8 @@ use Symfony\Component\Security\Core\Security;
*/
abstract class AbstractFormLoginAuthenticator extends AbstractGuardAuthenticator
{
+ use TargetPathTrait;
+
/**
* Return the URL to the login page.
*
@@ -34,16 +37,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
@@ -73,12 +66,18 @@ abstract class AbstractFormLoginAuthenticator extends AbstractGuardAuthenticator
*/
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
+ @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)));
+ }
+
$targetPath = null;
// if the user hit a secure page and start() was called, this was
// the URL they were on, and probably where you want to redirect to
if ($request->getSession() instanceof SessionInterface) {
- $targetPath = $request->getSession()->get('_security.'.$providerKey.'.target_path');
+ $targetPath = $this->getTargetPath($request->getSession(), $providerKey);
}
if (!$targetPath) {
diff --git a/Guard/Firewall/GuardAuthenticationListener.php b/Guard/Firewall/GuardAuthenticationListener.php
index ed0a36e..59d5d29 100644
--- a/Guard/Firewall/GuardAuthenticationListener.php
+++ b/Guard/Firewall/GuardAuthenticationListener.php
@@ -78,7 +78,7 @@ class GuardAuthenticationListener implements ListenerInterface
if ($event->hasResponse()) {
if (null !== $this->logger) {
- $this->logger->debug(sprintf('The "%s" authenticator set the response. Any later authenticator will not be called', get_class($guardAuthenticator)));
+ $this->logger->debug('The "{authenticator}" authenticator set the response. Any later authenticator will not be called', array('authenticator' => get_class($guardAuthenticator)));
}
break;
diff --git a/Guard/Provider/GuardAuthenticationProvider.php b/Guard/Provider/GuardAuthenticationProvider.php
index 4347e02..2793674 100644
--- a/Guard/Provider/GuardAuthenticationProvider.php
+++ b/Guard/Provider/GuardAuthenticationProvider.php
@@ -12,7 +12,6 @@
namespace Symfony\Component\Security\Guard\Provider;
use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface;
-use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Guard\GuardAuthenticatorInterface;
diff --git a/Guard/Tests/Authenticator/FormLoginAuthenticatorTest.php b/Guard/Tests/Authenticator/FormLoginAuthenticatorTest.php
index 3dbbf84..e35564b 100644
--- a/Guard/Tests/Authenticator/FormLoginAuthenticatorTest.php
+++ b/Guard/Tests/Authenticator/FormLoginAuthenticatorTest.php
@@ -50,6 +50,9 @@ class FormLoginAuthenticatorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(self::LOGIN_URL, $failureResponse->getTargetUrl());
}
+ /**
+ * @group legacy
+ */
public function testAuthenticationSuccessWithoutSession()
{
$token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface')
@@ -62,6 +65,9 @@ class FormLoginAuthenticatorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(self::DEFAULT_SUCCESS_URL, $redirectResponse->getTargetUrl());
}
+ /**
+ * @group legacy
+ */
public function testAuthenticationSuccessWithSessionButEmpty()
{
$token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface')
@@ -78,6 +84,9 @@ class FormLoginAuthenticatorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(self::DEFAULT_SUCCESS_URL, $redirectResponse->getTargetUrl());
}
+ /**
+ * @group legacy
+ */
public function testAuthenticationSuccessWithSessionAndTarget()
{
$token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface')
diff --git a/Guard/composer.json b/Guard/composer.json
index 3208920..7adb774 100644
--- a/Guard/composer.json
+++ b/Guard/composer.json
@@ -16,9 +16,9 @@
}
],
"require": {
- "php": ">=5.3.9",
- "symfony/security-core": "~2.8|~3.0.0",
- "symfony/security-http": "~2.7|~3.0.0"
+ "php": ">=5.5.9",
+ "symfony/security-core": "~2.8|~3.0",
+ "symfony/security-http": "~3.1"
},
"require-dev": {
"psr/log": "~1.0"
@@ -32,7 +32,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
}
}
diff --git a/Http/Authentication/DefaultAuthenticationSuccessHandler.php b/Http/Authentication/DefaultAuthenticationSuccessHandler.php
index bfc0c8b..4cb4bb6 100644
--- a/Http/Authentication/DefaultAuthenticationSuccessHandler.php
+++ b/Http/Authentication/DefaultAuthenticationSuccessHandler.php
@@ -13,6 +13,7 @@ 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;
@@ -25,6 +26,8 @@ use Symfony\Component\Security\Http\ParameterBagUtils;
*/
class DefaultAuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface
{
+ use TargetPathTrait;
+
protected $httpUtils;
protected $options;
protected $providerKey;
@@ -113,8 +116,8 @@ class DefaultAuthenticationSuccessHandler implements AuthenticationSuccessHandle
return $targetUrl;
}
- if (null !== $this->providerKey && $targetUrl = $request->getSession()->get('_security.'.$this->providerKey.'.target_path')) {
- $request->getSession()->remove('_security.'.$this->providerKey.'.target_path');
+ if (null !== $this->providerKey && $targetUrl = $this->getTargetPath($request->getSession(), $this->providerKey)) {
+ $this->removeTargetPath($request->getSession(), $this->providerKey);
return $targetUrl;
}
diff --git a/Http/Authentication/SimpleFormAuthenticatorInterface.php b/Http/Authentication/SimpleFormAuthenticatorInterface.php
index 112688c..39c3133 100644
--- a/Http/Authentication/SimpleFormAuthenticatorInterface.php
+++ b/Http/Authentication/SimpleFormAuthenticatorInterface.php
@@ -11,11 +11,13 @@
namespace Symfony\Component\Security\Http\Authentication;
-use Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface as BaseSimpleFormAuthenticatorInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\Security\Core\Authentication\SimpleAuthenticatorInterface;
/**
* @author Jordi Boggiano <j.boggiano@seld.be>
*/
-interface SimpleFormAuthenticatorInterface extends BaseSimpleFormAuthenticatorInterface
+interface SimpleFormAuthenticatorInterface extends SimpleAuthenticatorInterface
{
+ public function createToken(Request $request, $username, $password, $providerKey);
}
diff --git a/Http/Authentication/SimplePreAuthenticatorInterface.php b/Http/Authentication/SimplePreAuthenticatorInterface.php
index afa8049..63abb15 100644
--- a/Http/Authentication/SimplePreAuthenticatorInterface.php
+++ b/Http/Authentication/SimplePreAuthenticatorInterface.php
@@ -11,11 +11,13 @@
namespace Symfony\Component\Security\Http\Authentication;
-use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface as BaseSimplePreAuthenticatorInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\Security\Core\Authentication\SimpleAuthenticatorInterface;
/**
* @author Jordi Boggiano <j.boggiano@seld.be>
*/
-interface SimplePreAuthenticatorInterface extends BaseSimplePreAuthenticatorInterface
+interface SimplePreAuthenticatorInterface extends SimpleAuthenticatorInterface
{
+ public function createToken(Request $request, $providerKey);
}
diff --git a/Http/EntryPoint/DigestAuthenticationEntryPoint.php b/Http/EntryPoint/DigestAuthenticationEntryPoint.php
index cdb98eb..9dfd592 100644
--- a/Http/EntryPoint/DigestAuthenticationEntryPoint.php
+++ b/Http/EntryPoint/DigestAuthenticationEntryPoint.php
@@ -65,16 +65,6 @@ class DigestAuthenticationEntryPoint implements AuthenticationEntryPointInterfac
}
/**
- * @deprecated Since version 2.8, to be removed in 3.0. Use getSecret() instead.
- */
- public function getKey()
- {
- @trigger_error(__method__.'() is deprecated since version 2.8 and will be removed in 3.0. Use getSecret() instead.', E_USER_DEPRECATED);
-
- return $this->getSecret();
- }
-
- /**
* @return string
*/
public function getSecret()
diff --git a/Http/Firewall/ContextListener.php b/Http/Firewall/ContextListener.php
index 9ac37cd..4d6f3f8 100644
--- a/Http/Firewall/ContextListener.php
+++ b/Http/Firewall/ContextListener.php
@@ -15,7 +15,10 @@ use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver;
+use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
+use Symfony\Component\Security\Core\Authentication\Token\RememberMeToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
@@ -39,8 +42,9 @@ class ContextListener implements ListenerInterface
private $userProviders;
private $dispatcher;
private $registered;
+ private $trustResolver;
- public function __construct(TokenStorageInterface $tokenStorage, array $userProviders, $contextKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null)
+ public function __construct(TokenStorageInterface $tokenStorage, array $userProviders, $contextKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, AuthenticationTrustResolverInterface $trustResolver = null)
{
if (empty($contextKey)) {
throw new \InvalidArgumentException('$contextKey must not be empty.');
@@ -58,6 +62,7 @@ class ContextListener implements ListenerInterface
$this->sessionKey = '_security_'.$contextKey;
$this->logger = $logger;
$this->dispatcher = $dispatcher;
+ $this->trustResolver = $trustResolver ?: new AuthenticationTrustResolver(AnonymousToken::class, RememberMeToken::class);
}
/**
@@ -121,7 +126,7 @@ class ContextListener implements ListenerInterface
$request = $event->getRequest();
$session = $request->getSession();
- if ((null === $token = $this->tokenStorage->getToken()) || ($token instanceof AnonymousToken)) {
+ if ((null === $token = $this->tokenStorage->getToken()) || $this->trustResolver->isAnonymous($token)) {
if ($request->hasPreviousSession()) {
$session->remove($this->sessionKey);
}
diff --git a/Http/Firewall/ExceptionListener.php b/Http/Firewall/ExceptionListener.php
index a1cae2a..98f5ac0 100644
--- a/Http/Firewall/ExceptionListener.php
+++ b/Http/Firewall/ExceptionListener.php
@@ -22,6 +22,7 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\Exception\InsufficientAuthenticationException;
use Symfony\Component\Security\Core\Exception\LogoutException;
+use Symfony\Component\Security\Http\Util\TargetPathTrait;
use Symfony\Component\Security\Http\HttpUtils;
use Symfony\Component\HttpFoundation\Request;
use Psr\Log\LoggerInterface;
@@ -39,6 +40,8 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
*/
class ExceptionListener
{
+ use TargetPathTrait;
+
private $tokenStorage;
private $providerKey;
private $accessDeniedHandler;
@@ -200,7 +203,15 @@ class ExceptionListener
}
}
- return $this->authenticationEntryPoint->start($request, $authException);
+ $response = $this->authenticationEntryPoint->start($request, $authException);
+
+ if (!$response instanceof Response) {
+ $given = is_object($response) ? get_class($response) : gettype($response);
+
+ throw new \LogicException(sprintf('The %s::start() method must return a Response object (%s returned)', get_class($this->authenticationEntryPoint), $given));
+ }
+
+ return $response;
}
/**
@@ -210,7 +221,7 @@ class ExceptionListener
{
// session isn't required when using HTTP basic authentication mechanism for example
if ($request->hasSession() && $request->isMethodSafe() && !$request->isXmlHttpRequest()) {
- $request->getSession()->set('_security.'.$this->providerKey.'.target_path', $request->getUri());
+ $this->saveTargetPath($request->getSession(), $this->providerKey, $request->getUri());
}
}
}
diff --git a/Http/Firewall/LogoutListener.php b/Http/Firewall/LogoutListener.php
index e19d39c..47583be 100644
--- a/Http/Firewall/LogoutListener.php
+++ b/Http/Firewall/LogoutListener.php
@@ -11,13 +11,10 @@
namespace Symfony\Component\Security\Http\Firewall;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
-use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\Exception\LogoutException;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
@@ -49,24 +46,8 @@ class LogoutListener implements ListenerInterface
* @param array $options An array of options to process a logout attempt
* @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance
*/
- public function __construct(TokenStorageInterface $tokenStorage, HttpUtils $httpUtils, LogoutSuccessHandlerInterface $successHandler, array $options = array(), $csrfTokenManager = null)
+ public function __construct(TokenStorageInterface $tokenStorage, HttpUtils $httpUtils, LogoutSuccessHandlerInterface $successHandler, array $options = array(), CsrfTokenManagerInterface $csrfTokenManager = null)
{
- if ($csrfTokenManager instanceof CsrfProviderInterface) {
- $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
- } elseif (null !== $csrfTokenManager && !$csrfTokenManager instanceof CsrfTokenManagerInterface) {
- throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
- }
-
- if (isset($options['intention'])) {
- if (isset($options['csrf_token_id'])) {
- throw new \InvalidArgumentException(sprintf('You should only define an option for one of "intention" or "csrf_token_id" for the "%s". Use the "csrf_token_id" as it replaces "intention".', __CLASS__));
- }
-
- @trigger_error('The "intention" option for the '.__CLASS__.' is deprecated since version 2.8 and will be removed in 3.0. Use the "csrf_token_id" option instead.', E_USER_DEPRECATED);
-
- $options['csrf_token_id'] = $options['intention'];
- }
-
$this->tokenStorage = $tokenStorage;
$this->httpUtils = $httpUtils;
$this->options = array_merge(array(
diff --git a/Http/Firewall/SimpleFormAuthenticationListener.php b/Http/Firewall/SimpleFormAuthenticationListener.php
index 331d018..7c940c3 100644
--- a/Http/Firewall/SimpleFormAuthenticationListener.php
+++ b/Http/Firewall/SimpleFormAuthenticationListener.php
@@ -12,17 +12,14 @@
namespace Symfony\Component\Security\Http\Firewall;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
-use Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface;
+use Symfony\Component\Security\Http\Authentication\SimpleFormAuthenticatorInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Core\Security;
@@ -57,30 +54,13 @@ class SimpleFormAuthenticationListener extends AbstractAuthenticationListener
* @param SimpleFormAuthenticatorInterface $simpleAuthenticator A SimpleFormAuthenticatorInterface instance
*
* @throws \InvalidArgumentException In case no simple authenticator is provided
- * @throws InvalidArgumentException In case an invalid CSRF token manager is passed
*/
- public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null, SimpleFormAuthenticatorInterface $simpleAuthenticator = null)
+ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, CsrfTokenManagerInterface $csrfTokenManager = null, SimpleFormAuthenticatorInterface $simpleAuthenticator = null)
{
if (!$simpleAuthenticator) {
throw new \InvalidArgumentException('Missing simple authenticator');
}
- if ($csrfTokenManager instanceof CsrfProviderInterface) {
- $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
- } elseif (null !== $csrfTokenManager && !$csrfTokenManager instanceof CsrfTokenManagerInterface) {
- throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
- }
-
- if (isset($options['intention'])) {
- if (isset($options['csrf_token_id'])) {
- throw new \InvalidArgumentException(sprintf('You should only define an option for one of "intention" or "csrf_token_id" for the "%s". Use the "csrf_token_id" as it replaces "intention".', __CLASS__));
- }
-
- @trigger_error('The "intention" option for the '.__CLASS__.' is deprecated since version 2.8 and will be removed in 3.0. Use the "csrf_token_id" option instead.', E_USER_DEPRECATED);
-
- $options['csrf_token_id'] = $options['intention'];
- }
-
$this->simpleAuthenticator = $simpleAuthenticator;
$this->csrfTokenManager = $csrfTokenManager;
diff --git a/Http/Firewall/SimplePreAuthenticationListener.php b/Http/Firewall/SimplePreAuthenticationListener.php
index 8f1f6fd..2b4b593 100644
--- a/Http/Firewall/SimplePreAuthenticationListener.php
+++ b/Http/Firewall/SimplePreAuthenticationListener.php
@@ -15,7 +15,7 @@ use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterfac
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface;
+use Symfony\Component\Security\Http\Authentication\SimplePreAuthenticatorInterface;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
diff --git a/Http/Firewall/UsernamePasswordFormAuthenticationListener.php b/Http/Firewall/UsernamePasswordFormAuthenticationListener.php
index 866d0c3..426457d 100644
--- a/Http/Firewall/UsernamePasswordFormAuthenticationListener.php
+++ b/Http/Firewall/UsernamePasswordFormAuthenticationListener.php
@@ -11,8 +11,6 @@
namespace Symfony\Component\Security\Http\Firewall;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\HttpFoundation\Request;
use Psr\Log\LoggerInterface;
use Symfony\Component\Security\Csrf\CsrfToken;
@@ -26,7 +24,6 @@ use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterfac
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
-use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -41,24 +38,8 @@ class UsernamePasswordFormAuthenticationListener extends AbstractAuthenticationL
{
private $csrfTokenManager;
- public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, $csrfTokenManager = null)
+ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, SessionAuthenticationStrategyInterface $sessionStrategy, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler, AuthenticationFailureHandlerInterface $failureHandler, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null, CsrfTokenManagerInterface $csrfTokenManager = null)
{
- if ($csrfTokenManager instanceof CsrfProviderInterface) {
- $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
- } elseif (null !== $csrfTokenManager && !$csrfTokenManager instanceof CsrfTokenManagerInterface) {
- throw new InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
- }
-
- if (isset($options['intention'])) {
- if (isset($options['csrf_token_id'])) {
- throw new \InvalidArgumentException(sprintf('You should only define an option for one of "intention" or "csrf_token_id" for the "%s". Use the "csrf_token_id" as it replaces "intention".', __CLASS__));
- }
-
- @trigger_error('The "intention" option for the '.__CLASS__.' is deprecated since version 2.8 and will be removed in 3.0. Use the "csrf_token_id" option instead.', E_USER_DEPRECATED);
-
- $options['csrf_token_id'] = $options['intention'];
- }
-
parent::__construct($tokenStorage, $authenticationManager, $sessionStrategy, $httpUtils, $providerKey, $successHandler, $failureHandler, array_merge(array(
'username_parameter' => '_username',
'password_parameter' => '_password',
diff --git a/Http/Logout/LogoutUrlGenerator.php b/Http/Logout/LogoutUrlGenerator.php
index 761e56a..ada733b 100644
--- a/Http/Logout/LogoutUrlGenerator.php
+++ b/Http/Logout/LogoutUrlGenerator.php
@@ -11,8 +11,6 @@
namespace Symfony\Component\Security\Http\Logout;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter;
-use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
@@ -47,14 +45,8 @@ class LogoutUrlGenerator
* @param string $csrfParameter The CSRF token parameter name
* @param CsrfTokenManagerInterface $csrfTokenManager A CsrfTokenManagerInterface instance
*/
- public function registerListener($key, $logoutPath, $csrfTokenId, $csrfParameter, $csrfTokenManager = null)
+ public function registerListener($key, $logoutPath, $csrfTokenId, $csrfParameter, CsrfTokenManagerInterface $csrfTokenManager = null)
{
- if ($csrfTokenManager instanceof CsrfProviderInterface) {
- $csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
- } elseif (null !== $csrfTokenManager && !$csrfTokenManager instanceof CsrfTokenManagerInterface) {
- throw new \InvalidArgumentException('The CSRF token manager should be an instance of CsrfProviderInterface or CsrfTokenManagerInterface.');
- }
-
$this->listeners[$key] = array($logoutPath, $csrfTokenId, $csrfParameter, $csrfTokenManager);
}
diff --git a/Http/RememberMe/AbstractRememberMeServices.php b/Http/RememberMe/AbstractRememberMeServices.php
index 8627bc8..c22105b 100644
--- a/Http/RememberMe/AbstractRememberMeServices.php
+++ b/Http/RememberMe/AbstractRememberMeServices.php
@@ -85,16 +85,6 @@ abstract class AbstractRememberMeServices implements RememberMeServicesInterface
}
/**
- * @deprecated Since version 2.8, to be removed in 3.0. Use getSecret() instead.
- */
- public function getKey()
- {
- @trigger_error(__method__.'() is deprecated since version 2.8 and will be removed in 3.0. Use getSecret() instead.', E_USER_DEPRECATED);
-
- return $this->getSecret();
- }
-
- /**
* @return string
*/
public function getSecret()
diff --git a/Http/RememberMe/PersistentTokenBasedRememberMeServices.php b/Http/RememberMe/PersistentTokenBasedRememberMeServices.php
index 807a4a7..edfa208 100644
--- a/Http/RememberMe/PersistentTokenBasedRememberMeServices.php
+++ b/Http/RememberMe/PersistentTokenBasedRememberMeServices.php
@@ -19,8 +19,6 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Exception\CookieTheftException;
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
-use Symfony\Component\Security\Core\Util\SecureRandomInterface;
-use Psr\Log\LoggerInterface;
/**
* Concrete implementation of the RememberMeServicesInterface which needs
@@ -34,27 +32,6 @@ class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
private $tokenProvider;
/**
- * Constructor.
- *
- * Note: The $secureRandom parameter is deprecated since version 2.8 and will be removed in 3.0.
- *
- * @param array $userProviders
- * @param string $secret
- * @param string $providerKey
- * @param array $options
- * @param LoggerInterface $logger
- * @param SecureRandomInterface $secureRandom
- */
- public function __construct(array $userProviders, $secret, $providerKey, array $options = array(), LoggerInterface $logger = null, SecureRandomInterface $secureRandom = null)
- {
- if (null !== $secureRandom) {
- @trigger_error('The $secureRandom parameter in '.__METHOD__.' is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
- }
-
- parent::__construct($userProviders, $secret, $providerKey, $options, $logger);
- }
-
- /**
* Sets the token provider.
*
* @param TokenProviderInterface $tokenProvider
diff --git a/Http/SecurityEvents.php b/Http/SecurityEvents.php
index 46c8257..550acb4 100644
--- a/Http/SecurityEvents.php
+++ b/Http/SecurityEvents.php
@@ -17,10 +17,7 @@ final class SecurityEvents
* The INTERACTIVE_LOGIN event occurs after a user is logged in
* interactively for authentication based on http, cookies or X509.
*
- * The event listener method receives a
- * Symfony\Component\Security\Http\Event\InteractiveLoginEvent instance.
- *
- * @Event
+ * @Event("Symfony\Component\Security\Http\Event\InteractiveLoginEvent")
*
* @var string
*/
@@ -30,10 +27,7 @@ final class SecurityEvents
* The SWITCH_USER event occurs before switch to another user and
* before exit from an already switched user.
*
- * The event listener method receives a
- * Symfony\Component\Security\Http\Event\SwitchUserEvent instance.
- *
- * @Event
+ * @Event("Symfony\Component\Security\Http\Event\SwitchUserEvent")
*
* @var string
*/
diff --git a/Http/Session/SessionAuthenticationStrategy.php b/Http/Session/SessionAuthenticationStrategy.php
index ccfa6ba..dd258a0 100644
--- a/Http/Session/SessionAuthenticationStrategy.php
+++ b/Http/Session/SessionAuthenticationStrategy.php
@@ -47,10 +47,7 @@ class SessionAuthenticationStrategy implements SessionAuthenticationStrategyInte
return;
case self::MIGRATE:
- // Destroying the old session is broken in php 5.4.0 - 5.4.10
- // See php bug #63379
- $destroy = PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411;
- $request->getSession()->migrate($destroy);
+ $request->getSession()->migrate(true);
return;
diff --git a/Http/Tests/Firewall/ContextListenerTest.php b/Http/Tests/Firewall/ContextListenerTest.php
index ae1199a..0213330 100644
--- a/Http/Tests/Firewall/ContextListenerTest.php
+++ b/Http/Tests/Firewall/ContextListenerTest.php
@@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Firewall\ContextListener;
@@ -85,6 +86,13 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($session->has('_security_session'));
}
+ public function testOnKernelResponseWillRemoveSessionOnAnonymousToken()
+ {
+ $session = $this->runSessionOnKernelResponse(new AnonymousToken('secret', 'anon.'), 'C:10:"serialized"');
+
+ $this->assertFalse($session->has('_security_session'));
+ }
+
public function testOnKernelResponseWithoutSession()
{
$tokenStorage = new TokenStorage();
diff --git a/Http/Tests/Firewall/ExceptionListenerTest.php b/Http/Tests/Firewall/ExceptionListenerTest.php
index 3d409e5..db0a242 100644
--- a/Http/Tests/Firewall/ExceptionListenerTest.php
+++ b/Http/Tests/Firewall/ExceptionListenerTest.php
@@ -65,6 +65,20 @@ class ExceptionListenerTest extends \PHPUnit_Framework_TestCase
);
}
+ public function testExceptionWhenEntryPointReturnsBadValue()
+ {
+ $event = $this->createEvent(new AuthenticationException());
+
+ $entryPoint = $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface');
+ $entryPoint->expects($this->once())->method('start')->will($this->returnValue('NOT A RESPONSE'));
+
+ $listener = $this->createExceptionListener(null, null, null, $entryPoint);
+ $listener->onKernelException($event);
+ // the exception has been replaced by our LogicException
+ $this->assertInstanceOf('LogicException', $event->getException());
+ $this->assertStringEndsWith('start() method must return a Response object (string returned)', $event->getException()->getMessage());
+ }
+
/**
* @dataProvider getAccessDeniedExceptionProvider
*/
diff --git a/Http/Tests/Session/SessionAuthenticationStrategyTest.php b/Http/Tests/Session/SessionAuthenticationStrategyTest.php
index 4aef4b2..a1f960f 100644
--- a/Http/Tests/Session/SessionAuthenticationStrategyTest.php
+++ b/Http/Tests/Session/SessionAuthenticationStrategyTest.php
@@ -39,10 +39,6 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase
public function testSessionIsMigrated()
{
- if (PHP_VERSION_ID >= 50400 && PHP_VERSION_ID < 50411) {
- $this->markTestSkipped('We cannot destroy the old session on PHP 5.4.0 - 5.4.10.');
- }
-
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');
$session->expects($this->once())->method('migrate')->with($this->equalTo(true));
@@ -50,19 +46,6 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase
$strategy->onAuthentication($this->getRequest($session), $this->getToken());
}
- public function testSessionIsMigratedWithPhp54Workaround()
- {
- if (PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411) {
- $this->markTestSkipped('This PHP version is not affected.');
- }
-
- $session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');
- $session->expects($this->once())->method('migrate')->with($this->equalTo(false));
-
- $strategy = new SessionAuthenticationStrategy(SessionAuthenticationStrategy::MIGRATE);
- $strategy->onAuthentication($this->getRequest($session), $this->getToken());
- }
-
public function testSessionIsInvalidated()
{
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');
diff --git a/Http/Tests/Util/TargetPathTraitTest.php b/Http/Tests/Util/TargetPathTraitTest.php
new file mode 100644
index 0000000..b2c4dc7
--- /dev/null
+++ b/Http/Tests/Util/TargetPathTraitTest.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Symfony\Component\Security\Http\Tests\Util;
+
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+use Symfony\Component\Security\Http\Util\TargetPathTrait;
+
+class TargetPathTraitTest extends \PHPUnit_Framework_TestCase
+{
+ public function testSetTargetPath()
+ {
+ $obj = new TestClassWithTargetPathTrait();
+
+ $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\SessionInterface')
+ ->getMock();
+
+ $session->expects($this->once())
+ ->method('set')
+ ->with('_security.firewall_name.target_path', '/foo');
+
+ $obj->doSetTargetPath($session, 'firewall_name', '/foo');
+ }
+
+ public function testGetTargetPath()
+ {
+ $obj = new TestClassWithTargetPathTrait();
+
+ $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\SessionInterface')
+ ->getMock();
+
+ $session->expects($this->once())
+ ->method('get')
+ ->with('_security.cool_firewall.target_path')
+ ->willReturn('/bar');
+
+ $actualUri = $obj->doGetTargetPath($session, 'cool_firewall');
+ $this->assertEquals(
+ '/bar',
+ $actualUri
+ );
+ }
+
+ public function testRemoveTargetPath()
+ {
+ $obj = new TestClassWithTargetPathTrait();
+
+ $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\SessionInterface')
+ ->getMock();
+
+ $session->expects($this->once())
+ ->method('remove')
+ ->with('_security.best_firewall.target_path');
+
+ $obj->doRemoveTargetPath($session, 'best_firewall');
+ }
+}
+
+class TestClassWithTargetPathTrait
+{
+ use TargetPathTrait;
+
+ public function doSetTargetPath(SessionInterface $session, $providerKey, $uri)
+ {
+ $this->saveTargetPath($session, $providerKey, $uri);
+ }
+
+ public function doGetTargetPath(SessionInterface $session, $providerKey)
+ {
+ return $this->getTargetPath($session, $providerKey);
+ }
+
+ public function doRemoveTargetPath(SessionInterface $session, $providerKey)
+ {
+ $this->removeTargetPath($session, $providerKey);
+ }
+}
diff --git a/Http/Util/TargetPathTrait.php b/Http/Util/TargetPathTrait.php
new file mode 100644
index 0000000..986adb0
--- /dev/null
+++ b/Http/Util/TargetPathTrait.php
@@ -0,0 +1,58 @@
+<?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\Http\Util;
+
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+
+/**
+ * Trait to get (and set) the URL the user last visited before being forced to authenticate.
+ */
+trait TargetPathTrait
+{
+ /**
+ * Sets the target path the user should be redirected to after authentication.
+ *
+ * Usually, you do not need to set this directly.
+ *
+ * @param SessionInterface $session
+ * @param string $providerKey The name of your firewall
+ * @param string $uri The URI to set as the target path
+ */
+ private function saveTargetPath(SessionInterface $session, $providerKey, $uri)
+ {
+ $session->set('_security.'.$providerKey.'.target_path', $uri);
+ }
+
+ /**
+ * Returns the URL (if any) the user visited that forced them to login.
+ *
+ * @param SessionInterface $session
+ * @param string $providerKey The name of your firewall
+ *
+ * @return string
+ */
+ private function getTargetPath(SessionInterface $session, $providerKey)
+ {
+ return $session->get('_security.'.$providerKey.'.target_path');
+ }
+
+ /**
+ * Removes the target path from the session.
+ *
+ * @param SessionInterface $session
+ * @param string $providerKey The name of your firewall
+ */
+ private function removeTargetPath(SessionInterface $session, $providerKey)
+ {
+ $session->remove('_security.'.$providerKey.'.target_path');
+ }
+}
diff --git a/Http/composer.json b/Http/composer.json
index 24708ac..f19d0e4 100644
--- a/Http/composer.json
+++ b/Http/composer.json
@@ -16,18 +16,18 @@
}
],
"require": {
- "php": ">=5.3.9",
- "symfony/security-core": "~2.8",
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/http-foundation": "~2.4|~3.0.0",
- "symfony/http-kernel": "~2.4|~3.0.0",
+ "php": ">=5.5.9",
+ "symfony/security-core": "~2.8|~3.0",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/http-foundation": "~2.8|~3.0",
+ "symfony/http-kernel": "~2.8|~3.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.0",
- "symfony/property-access": "~2.3|~3.0.0"
+ "symfony/property-access": "~2.8|~3.0"
},
"require-dev": {
- "symfony/routing": "~2.2|~3.0.0",
- "symfony/security-csrf": "~2.4|~3.0.0",
+ "symfony/routing": "~2.8|~3.0",
+ "symfony/security-csrf": "~2.8|~3.0",
"psr/log": "~1.0"
},
"suggest": {
@@ -43,7 +43,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
}
}
diff --git a/Resources/translations/security.ar.xlf b/Resources/translations/security.ar.xlf
deleted file mode 100644
index fd18ee6..0000000
--- a/Resources/translations/security.ar.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>حدث خطأ اثناء الدخول.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>لم استطع العثور على معلومات الدخول.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>لم يكتمل طلب الدخول نتيجه عطل فى النظام.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>معلومات الدخول خاطئة.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>ملفات تعريف الارتباط(cookies) تم استخدامها من قبل شخص اخر.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>ليست لديك الصلاحيات الكافية لهذا الطلب.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>رمز الموقع غير صحيح.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>انتهت صلاحية(digest nonce).</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>لا يوجد معرف للدخول يدعم الرمز المستخدم للدخول.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>لا يوجد صلة بينك و بين الموقع اما انها انتهت او ان متصفحك لا يدعم خاصية ملفات تعريف الارتباط (cookies).</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>لم استطع العثور على الرمز.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>لم استطع العثور على اسم الدخول.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>انتهت صلاحية الحساب.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>انتهت صلاحية معلومات الدخول.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>الحساب موقوف.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>الحساب مغلق.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.az.xlf b/Resources/translations/security.az.xlf
deleted file mode 100644
index a974ed0..0000000
--- a/Resources/translations/security.az.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Doğrulama istisnası baş verdi.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Doğrulama məlumatları tapılmadı.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Sistem xətası səbəbilə doğrulama istəyi emal edilə bilmədi.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Yanlış məlumat.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Kuki başqası tərəfindən istifadə edilib.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Resurs istəyi üçün imtiyaz yoxdur.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Yanlış CSRF nişanı.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Dərləmə istifadə müddəti bitib.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Doğrulama nişanını dəstəkləyəcək provayder tapılmadı.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Uyğun seans yoxdur, vaxtı keçib və ya kuki aktiv deyil.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nişan tapılmadı.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>İstifadəçi adı tapılmadı.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Hesabın istifadə müddəti bitib.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Məlumatların istifadə müddəti bitib.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Hesab qeyri-aktiv edilib.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Hesab kilitlənib.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.bg.xlf b/Resources/translations/security.bg.xlf
deleted file mode 100644
index 06692ea..0000000
--- a/Resources/translations/security.bg.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Грешка при автентикация.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Удостоверението за автентикация не е открито.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Заявката за автентикация не може да бъде обработената поради системна грешка.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Невалидно удостоверение за автентикация.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Това cookie вече се ползва от някой друг.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Нямате права за достъп до този ресурс.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Невалиден CSRF токен.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce е изтекъл.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Не е открит провайдър, който да поддържа този токен за автентикация.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Сесията не е достъпна, или времето за достъп е изтекло, или кукитата не са разрешени.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Токена не е открит.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Потребителското име не е открито.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Акаунта е изтекъл.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Удостоверението за автентикация е изтекло.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Акаунта е деактивиран.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Акаунта е заключен.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.ca.xlf b/Resources/translations/security.ca.xlf
deleted file mode 100644
index 7ece260..0000000
--- a/Resources/translations/security.ca.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ha succeït un error d'autenticació.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>No s'han trobat les credencials d'autenticació.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>La solicitud d'autenticació no s'ha pogut processar per un problema del sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credencials no vàlides.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>La cookie ja ha estat utilitzada per una altra persona.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>No té privilegis per solicitar el recurs.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF no vàlid.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>El vector d'inicialització (digest nonce) ha expirat.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>No s'ha trobat un proveïdor d'autenticació que suporti el token d'autenticació.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>No hi ha sessió disponible, ha expirat o les cookies no estan habilitades.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>No s'ha trobat cap token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>No s'ha trobat el nom d'usuari.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>El compte ha expirat.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Les credencials han expirat.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>El compte està deshabilitat.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>El compte està bloquejat.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.cs.xlf b/Resources/translations/security.cs.xlf
deleted file mode 100644
index bd146c6..0000000
--- a/Resources/translations/security.cs.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Při ověřování došlo k chybě.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Ověřovací údaje nebyly nalezeny.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Požadavek na ověření nemohl být zpracován kvůli systémové chybě.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Neplatné přihlašovací údaje.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie již bylo použité někým jiným.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nemáte oprávnění přistupovat k prostředku.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Neplatný CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Platnost inicializačního vektoru (digest nonce) vypršela.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Poskytovatel pro ověřovací token nebyl nalezen.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Session není k dispozici, vypršela její platnost, nebo jsou zakázané cookies.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Token nebyl nalezen.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Přihlašovací jméno nebylo nalezeno.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Platnost účtu vypršela.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Platnost přihlašovacích údajů vypršela.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Účet je zakázaný.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Účet je zablokovaný.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.da.xlf b/Resources/translations/security.da.xlf
deleted file mode 100644
index 2ac4150..0000000
--- a/Resources/translations/security.da.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>En fejl indtraf ved godkendelse.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Loginoplysninger kan findes.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Godkendelsesanmodning kan ikke behandles på grund af et systemfejl.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Ugyldige loginoplysninger.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie er allerede brugt af en anden.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Ingen tilladselese at anvende kilden.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Ugyldigt CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce er udløbet.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Ingen godkendelsesudbyder er fundet til understøttelsen af godkendelsestoken.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Ingen session tilgængelig, sessionen er enten udløbet eller cookies er ikke aktiveret.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Ingen token kan findes.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Brugernavn kan ikke findes.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Brugerkonto er udløbet.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Loginoplysninger er udløbet.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Brugerkonto er deaktiveret.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Brugerkonto er låst.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.de.xlf b/Resources/translations/security.de.xlf
deleted file mode 100644
index e5946ed..0000000
--- a/Resources/translations/security.de.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Es ist ein Fehler bei der Authentifikation aufgetreten.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Es konnten keine Zugangsdaten gefunden werden.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Die Authentifikation konnte wegen eines Systemproblems nicht bearbeitet werden.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Fehlerhafte Zugangsdaten.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie wurde bereits von jemand anderem verwendet.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Keine Rechte, um die Ressource anzufragen.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Ungültiges CSRF-Token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce ist abgelaufen.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Es wurde kein Authentifizierungs-Provider gefunden, der das Authentifizierungs-Token unterstützt.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Keine Session verfügbar, entweder ist diese abgelaufen oder Cookies sind nicht aktiviert.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Es wurde kein Token gefunden.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Der Benutzername wurde nicht gefunden.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Der Account ist abgelaufen.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Die Zugangsdaten sind abgelaufen.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Der Account ist deaktiviert.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Der Account ist gesperrt.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.el.xlf b/Resources/translations/security.el.xlf
deleted file mode 100644
index 07eabe7..0000000
--- a/Resources/translations/security.el.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Συνέβη ένα σφάλμα πιστοποίησης.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Τα στοιχεία πιστοποίησης δε βρέθηκαν.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Το αίτημα πιστοποίησης δε μπορεί να επεξεργαστεί λόγω σφάλματος του συστήματος.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Λανθασμένα στοιχεία σύνδεσης.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Το Cookie έχει ήδη χρησιμοποιηθεί από κάποιον άλλο.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Δεν είστε εξουσιοδοτημένος για πρόσβαση στο συγκεκριμένο περιεχόμενο.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Μη έγκυρο CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Το digest nonce έχει λήξει.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Δε βρέθηκε κάποιος πάροχος πιστοποίησης που να υποστηρίζει το token πιστοποίησης.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Δεν υπάρχει ενεργή σύνοδος (session), είτε έχει λήξει ή τα cookies δεν είναι ενεργοποιημένα.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Δεν ήταν δυνατόν να βρεθεί κάποιο token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Το Username δε βρέθηκε.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Ο λογαριασμός έχει λήξει.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Τα στοιχεία σύνδεσης έχουν λήξει.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Ο λογαριασμός είναι απενεργοποιημένος.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Ο λογαριασμός είναι κλειδωμένος.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.en.xlf b/Resources/translations/security.en.xlf
deleted file mode 100644
index 3640698..0000000
--- a/Resources/translations/security.en.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>An authentication exception occurred.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Authentication credentials could not be found.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Authentication request could not be processed due to a system problem.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Invalid credentials.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie has already been used by someone else.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Not privileged to request the resource.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Invalid CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce has expired.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>No authentication provider found to support the authentication token.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>No session available, it either timed out or cookies are not enabled.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>No token could be found.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Username could not be found.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Account has expired.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Credentials have expired.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Account is disabled.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Account is locked.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.es.xlf b/Resources/translations/security.es.xlf
deleted file mode 100644
index 00cefbb..0000000
--- a/Resources/translations/security.es.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ocurrió un error de autenticación.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>No se encontraron las credenciales de autenticación.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>La solicitud de autenticación no se pudo procesar debido a un problema del sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credenciales no válidas.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>La cookie ya ha sido usada por otra persona.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>No tiene privilegios para solicitar el recurso.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF no válido.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>El vector de inicialización (digest nonce) ha expirado.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>No se encontró un proveedor de autenticación que soporte el token de autenticación.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>No hay ninguna sesión disponible, ha expirado o las cookies no están habilitados.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>No se encontró ningún token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>No se encontró el nombre de usuario.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>La cuenta ha expirado.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Las credenciales han expirado.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>La cuenta está deshabilitada.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>La cuenta está bloqueada.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.fa.xlf b/Resources/translations/security.fa.xlf
deleted file mode 100644
index 0b76290..0000000
--- a/Resources/translations/security.fa.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>خطایی هنگام تعیین اعتبار اتفاق افتاد.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>شرایط تعیین اعتبار پیدا نشد.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>درخواست تعیین اعتبار به دلیل مشکل سیستم قابل بررسی نیست.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>شرایط نامعتبر.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>کوکی قبلا برای شخص دیگری استفاده شده است.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>دسترسی لازم برای درخواست این منبع را ندارید.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>توکن CSRF معتبر نیست.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce منقضی شده است.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>هیچ ارایه کننده تعیین اعتباری برای ساپورت توکن تعیین اعتبار پیدا نشد.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>جلسه‌ای در دسترس نیست. این میتواند یا به دلیل پایان یافتن زمان باشد یا اینکه کوکی ها فعال نیستند.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>هیچ توکنی پیدا نشد.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>نام ‌کاربری پیدا نشد.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>حساب کاربری منقضی شده است.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>پارامترهای تعیین اعتبار منقضی شده‌اند.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>حساب کاربری غیرفعال است.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>حساب کاربری قفل شده است.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.fr.xlf b/Resources/translations/security.fr.xlf
deleted file mode 100644
index 5a77c6e..0000000
--- a/Resources/translations/security.fr.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Une exception d'authentification s'est produite.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Les identifiants d'authentification n'ont pas pu être trouvés.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>La requête d'authentification n'a pas pu être executée à cause d'un problème système.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Identifiants invalides.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Le cookie a déjà été utilisé par quelqu'un d'autre.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Privilèges insuffisants pour accéder à la ressource.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Jeton CSRF invalide.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Le digest nonce a expiré.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Aucun fournisseur d'authentification n'a été trouvé pour supporter le jeton d'authentification.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Aucune session disponible, celle-ci a expiré ou les cookies ne sont pas activés.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Aucun jeton n'a pu être trouvé.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Le nom d'utilisateur n'a pas pu être trouvé.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Le compte a expiré.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Les identifiants ont expiré.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Le compte est désactivé.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Le compte est bloqué.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.gl.xlf b/Resources/translations/security.gl.xlf
deleted file mode 100644
index ed6491f..0000000
--- a/Resources/translations/security.gl.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ocorreu un erro de autenticación.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Non se atoparon as credenciais de autenticación.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>A solicitude de autenticación no puido ser procesada debido a un problema do sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credenciais non válidas.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>A cookie xa foi empregado por outro usuario.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Non ten privilexios para solicitar o recurso.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF non válido.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>O vector de inicialización (digest nonce) expirou.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Non se atopou un provedor de autenticación que soporte o token de autenticación.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Non hai ningunha sesión dispoñible, expirou ou as cookies non están habilitadas.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Non se atopou ningún token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Non se atopou o nome de usuario.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>A conta expirou.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>As credenciais expiraron.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>A conta está deshabilitada.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>A conta está bloqueada.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.he.xlf b/Resources/translations/security.he.xlf
deleted file mode 100644
index 3640698..0000000
--- a/Resources/translations/security.he.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>An authentication exception occurred.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Authentication credentials could not be found.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Authentication request could not be processed due to a system problem.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Invalid credentials.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie has already been used by someone else.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Not privileged to request the resource.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Invalid CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce has expired.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>No authentication provider found to support the authentication token.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>No session available, it either timed out or cookies are not enabled.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>No token could be found.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Username could not be found.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Account has expired.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Credentials have expired.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Account is disabled.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Account is locked.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.hr.xlf b/Resources/translations/security.hr.xlf
deleted file mode 100644
index 147b6e3..0000000
--- a/Resources/translations/security.hr.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Dogodila se autentifikacijske iznimka.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Autentifikacijski podaci nisu pronađeni.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Autentifikacijski zahtjev nije moguće provesti uslijed sistemskog problema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Neispravni akreditacijski podaci.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie je već netko drugi iskoristio.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nemate privilegije zahtijevati resurs.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Neispravan CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce je isteko.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nije pronađen autentifikacijski provider koji bi podržao autentifikacijski token.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Sesija nije dostupna, ili je istekla ili cookies nisu omogućeni.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Token nije pronađen.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Korisničko ime nije pronađeno.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Račun je isteko.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Akreditacijski podaci su istekli.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Račun je onemogućen.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Račun je zaključan.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.hu.xlf b/Resources/translations/security.hu.xlf
deleted file mode 100644
index 7243970..0000000
--- a/Resources/translations/security.hu.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Hitelesítési hiba lépett fel.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Nem találhatók hitelesítési információk.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>A hitelesítési kérést rendszerhiba miatt nem lehet feldolgozni.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Érvénytelen hitelesítési információk.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Ezt a sütit valaki más már felhasználta.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nem rendelkezik az erőforrás eléréséhez szükséges jogosultsággal.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Érvénytelen CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>A kivonat bélyege (nonce) lejárt.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nem található a hitelesítési tokent támogató hitelesítési szolgáltatás.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Munkamenet nem áll rendelkezésre, túllépte az időkeretet vagy a sütik le vannak tiltva.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nem található token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>A felhasználónév nem található.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>A fiók lejárt.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>A hitelesítési információk lejártak.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Felfüggesztett fiók.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Zárolt fiók.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.id.xlf b/Resources/translations/security.id.xlf
deleted file mode 100644
index ab1153b..0000000
--- a/Resources/translations/security.id.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Terjadi sebuah pengecualian otentikasi.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Kredensial otentikasi tidak bisa ditemukan.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Permintaan otentikasi tidak bisa diproses karena masalah sistem.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Kredensial salah.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie sudah digunakan oleh orang lain.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Tidak berhak untuk meminta sumber daya.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF salah.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce telah berakhir.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Tidak ditemukan penyedia otentikasi untuk mendukung token otentikasi.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Tidak ada sesi yang tersedia, mungkin waktu sudah habis atau cookie tidak diaktifkan</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Tidak ada token yang bisa ditemukan.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Username tidak bisa ditemukan.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Akun telah berakhir.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Kredensial telah berakhir.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Akun dinonaktifkan.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Akun terkunci.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.it.xlf b/Resources/translations/security.it.xlf
deleted file mode 100644
index 75d81cc..0000000
--- a/Resources/translations/security.it.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Si è verificato un errore di autenticazione.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Impossibile trovare le credenziali di autenticazione.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>La richiesta di autenticazione non può essere processata a causa di un errore di sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credenziali non valide.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Il cookie è già stato usato da qualcun altro.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Non hai i privilegi per richiedere questa risorsa.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>CSRF token non valido.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Il numero di autenticazione è scaduto.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Non è stato trovato un valido fornitore di autenticazione per supportare il token.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Nessuna sessione disponibile, può essere scaduta o i cookie non sono abilitati.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nessun token trovato.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Username non trovato.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Account scaduto.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Credenziali scadute.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>L'account è disabilitato.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>L'account è bloccato.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.ja.xlf b/Resources/translations/security.ja.xlf
deleted file mode 100644
index 6a6b062..0000000
--- a/Resources/translations/security.ja.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>認証エラーが発生しました。</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>認証資格がありません。</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>システムの問題により認証要求を処理できませんでした。</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>資格が無効です。</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie が別のユーザーで使用されています。</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>リソースをリクエストする権限がありません。</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>CSRF トークンが無効です。</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest の nonce 値が期限切れです。</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>認証トークンをサポートする認証プロバイダーが見つかりません。</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>利用可能なセッションがありません。タイムアウトしたか、Cookie が無効になっています。</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>トークンが見つかりません。</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>ユーザー名が見つかりません。</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>アカウントが有効期限切れです。</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>資格が有効期限切れです。</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>アカウントが無効です。</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>アカウントはロックされています。</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.lb.xlf b/Resources/translations/security.lb.xlf
deleted file mode 100644
index 3dc76d5..0000000
--- a/Resources/translations/security.lb.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" target-language="lb" datatype="plaintext" original="security.en.xlf">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Bei der Authentifikatioun ass e Feeler opgetrueden.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Et konnte keng Zouganksdate fonnt ginn.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>D'Ufro fir eng Authentifikatioun konnt wéinst engem Problem vum System net beaarbecht ginn.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Ongëlteg Zouganksdaten.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>De Cookie gouf scho vun engem anere benotzt.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Keng Rechter fir d'Ressource unzefroen.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Ongëltegen CSRF-Token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Den eemolege Schlëssel ass ofgelaf.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Et gouf keen Authentifizéierungs-Provider fonnt deen den Authentifizéierungs-Token ënnerstëtzt.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Keng Sëtzung disponibel. Entweder ass se ofgelaf oder Cookies sinn net aktivéiert.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Et konnt keen Token fonnt ginn.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>De Benotzernumm konnt net fonnt ginn.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Den Account ass ofgelaf.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>D'Zouganksdate sinn ofgelaf.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>De Konto ass deaktivéiert.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>De Konto ass gespaart.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.lt.xlf b/Resources/translations/security.lt.xlf
deleted file mode 100644
index da6c332..0000000
--- a/Resources/translations/security.lt.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Įvyko autentifikacijos klaida.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Nepavyko rasti autentifikacijos duomneų.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Autentifikacijos užklausos nepavyko įvykdyti dėl sistemos klaidų.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Klaidingi duomenys.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Slapukas buvo panaudotas kažkam kitam.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Neturite teisių pasiektį resursą.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Neteisingas CSRF raktas.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Prieigos kodas yra pasibaigęs.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nerastas autentifikacijos tiekėjas, kuris palaikytų autentifikacijos raktą.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Sesija yra nepasiekiama, pasibaigė galiojimo laikas arba slapukai yra išjungti.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nepavyko rasti rakto.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Tokio naudotojo vardo nepavyko rasti.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Paskyros galiojimo laikas baigėsi.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Autentifikacijos duomenų galiojimo laikas baigėsi.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Paskyra yra išjungta.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Paskyra yra užblokuota.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.nl.xlf b/Resources/translations/security.nl.xlf
deleted file mode 100644
index 8969e9e..0000000
--- a/Resources/translations/security.nl.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Er heeft zich een authenticatieprobleem voorgedaan.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Authenticatiegegevens konden niet worden gevonden.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Authenticatieaanvraag kon niet worden verwerkt door een technisch probleem.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Ongeldige inloggegevens.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie is al door een ander persoon gebruikt.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Onvoldoende rechten om de aanvraag te verwerken.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>CSRF-code is ongeldig.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Serverauthenticatiesleutel (digest nonce) is verlopen.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Geen authenticatieprovider gevonden die de authenticatietoken ondersteunt.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Geen sessie beschikbaar, mogelijk is deze verlopen of cookies zijn uitgeschakeld.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Er kon geen authenticatietoken worden gevonden.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Gebruikersnaam kon niet worden gevonden.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Account is verlopen.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Authenticatiegegevens zijn verlopen.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Account is gedeactiveerd.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Account is geblokkeerd.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.no.xlf b/Resources/translations/security.no.xlf
deleted file mode 100644
index 3635916..0000000
--- a/Resources/translations/security.no.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>En autentiseringsfeil har skjedd.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Påloggingsinformasjonen kunne ikke bli funnet.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Autentiserings forespørselen kunne ikke bli prosessert grunnet en system feil.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Ugyldig påloggingsinformasjonen.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie har allerede blitt brukt av noen andre.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Ingen tilgang til å be om gitt ressurs.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Ugyldig CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce er utløpt.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Ingen autentiserings tilbyder funnet som støtter gitt autentiserings token.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Ingen sesjon tilgjengelig, sesjonen er enten utløpt eller cookies ikke skrudd på.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Ingen token kunne bli funnet.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Brukernavn kunne ikke bli funnet.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Brukerkonto har utgått.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Påloggingsinformasjon har utløpt.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Brukerkonto er deaktivert.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Brukerkonto er sperret.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.pl.xlf b/Resources/translations/security.pl.xlf
deleted file mode 100644
index 8d563d2..0000000
--- a/Resources/translations/security.pl.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Wystąpił błąd uwierzytelniania.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Dane uwierzytelniania nie zostały znalezione.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Żądanie uwierzytelniania nie mogło zostać pomyślnie zakończone z powodu problemu z systemem.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Nieprawidłowe dane.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>To ciasteczko jest używane przez kogoś innego.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Brak uprawnień dla żądania wskazanego zasobu.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Nieprawidłowy token CSRF.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Kod dostępu wygasł.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nie znaleziono mechanizmu uwierzytelniania zdolnego do obsługi przesłanego tokenu.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Brak danych sesji, sesja wygasła lub ciasteczka nie są włączone.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nie znaleziono tokenu.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Użytkownik o podanej nazwie nie istnieje.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Konto wygasło.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Dane uwierzytelniania wygasły.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Konto jest wyłączone.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Konto jest zablokowane.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.pt_BR.xlf b/Resources/translations/security.pt_BR.xlf
deleted file mode 100644
index 61685d9..0000000
--- a/Resources/translations/security.pt_BR.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Uma exceção ocorreu durante a autenticação.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>As credenciais de autenticação não foram encontradas.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>A autenticação não pôde ser concluída devido a um problema no sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credenciais inválidas.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Este cookie já está em uso.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Não possui privilégios o bastante para requisitar este recurso.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF inválido.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce expirado.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nenhum provedor de autenticação encontrado para suportar o token de autenticação.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Nenhuma sessão disponível, ela expirou ou os cookies estão desativados.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Nenhum token foi encontrado.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Nome de usuário não encontrado.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>A conta está expirada.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>As credenciais estão expiradas.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Conta desativada.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>A conta está travada.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.pt_PT.xlf b/Resources/translations/security.pt_PT.xlf
deleted file mode 100644
index f2af13e..0000000
--- a/Resources/translations/security.pt_PT.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ocorreu uma excepção durante a autenticação.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>As credenciais de autenticação não foram encontradas.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>O pedido de autenticação não foi concluído devido a um problema no sistema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Credenciais inválidas.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Este cookie já está em uso.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Não possui privilégios para aceder a este recurso.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Token CSRF inválido.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce expirado.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nenhum fornecedor de autenticação encontrado para suportar o token de autenticação.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Não existe sessão disponível, esta expirou ou os cookies estão desativados.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>O token não foi encontrado.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Nome de utilizador não encontrado.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>A conta expirou.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>As credenciais expiraram.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Conta desativada.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>A conta está trancada.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.ro.xlf b/Resources/translations/security.ro.xlf
deleted file mode 100644
index 440f110..0000000
--- a/Resources/translations/security.ro.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>A apărut o eroare de autentificare.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Informațiile de autentificare nu au fost găsite.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Sistemul nu a putut procesa cererea de autentificare din cauza unei erori.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Date de autentificare invalide.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookieul este folosit deja de altcineva.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Permisiuni insuficiente pentru resursa cerută.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Tokenul CSRF este invalid.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Tokenul temporar a expirat.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Nu a fost găsit nici un agent de autentificare pentru tokenul specificat.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Sesiunea nu mai este disponibilă, a expirat sau suportul pentru cookieuri nu este activat.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Tokenul nu a putut fi găsit.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Numele de utilizator nu a fost găsit.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Contul a expirat.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Datele de autentificare au expirat.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Contul este dezactivat.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Contul este blocat.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.ru.xlf b/Resources/translations/security.ru.xlf
deleted file mode 100644
index 1964f95..0000000
--- a/Resources/translations/security.ru.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ошибка аутентификации.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Аутентификационные данные не найдены.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Запрос аутентификации не может быть обработан в связи с проблемой в системе.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Недействительные аутентификационные данные.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie уже был использован кем-то другим.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Отсутствуют права на запрос этого ресурса.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Недействительный токен CSRF.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Время действия одноразового ключа дайджеста истекло.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Не найден провайдер аутентификации, поддерживающий токен аутентификации.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Сессия не найдена, ее время истекло, либо cookies не включены.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Токен не найден.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Имя пользователя не найдено.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Время действия учетной записи истекло.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Время действия аутентификационных данных истекло.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Учетная запись отключена.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Учетная запись заблокирована.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.sk.xlf b/Resources/translations/security.sk.xlf
deleted file mode 100644
index e6552a6..0000000
--- a/Resources/translations/security.sk.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Pri overovaní došlo k chybe.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Overovacie údaje neboli nájdené.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Požiadavok na overenie nemohol byť spracovaný kvôli systémovej chybe.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Neplatné prihlasovacie údaje.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie už bolo použité niekým iným.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nemáte oprávnenie pristupovať k prostriedku.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Neplatný CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Platnosť inicializačného vektoru (digest nonce) skončila.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Poskytovateľ pre overovací token nebol nájdený.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Session nie je k dispozíci, vypršala jej platnosť, alebo sú zakázané cookies.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Token nebol nájdený.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Prihlasovacie meno nebolo nájdené.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Platnosť účtu skončila.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Platnosť prihlasovacích údajov skončila.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Účet je zakázaný.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Účet je zablokovaný.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.sl.xlf b/Resources/translations/security.sl.xlf
deleted file mode 100644
index ee70c9a..0000000
--- a/Resources/translations/security.sl.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Prišlo je do izjeme pri preverjanju avtentikacije.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Poverilnic za avtentikacijo ni bilo mogoče najti.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Zahteve za avtentikacijo ni bilo mogoče izvesti zaradi sistemske težave.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Neveljavne pravice.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Piškotek je uporabil že nekdo drug.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nimate privilegijev za zahtevani vir.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Neveljaven CSRF žeton.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Začasni žeton je potekel.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Ponudnika avtentikacije za podporo prijavnega žetona ni bilo mogoče najti.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Seja ni na voljo, ali je potekla ali pa piškotki niso omogočeni.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Žetona ni bilo mogoče najti.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Uporabniškega imena ni bilo mogoče najti.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Račun je potekel.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Poverilnice so potekle.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Račun je onemogočen.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Račun je zaklenjen.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.sr_Cyrl.xlf b/Resources/translations/security.sr_Cyrl.xlf
deleted file mode 100644
index 35e4ddf..0000000
--- a/Resources/translations/security.sr_Cyrl.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Изузетак при аутентификацији.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Аутентификациони подаци нису пронађени.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Захтев за аутентификацију не може бити обрађен због системских проблема.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Невалидни подаци за аутентификацију.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Колачић је већ искоришћен од стране неког другог.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Немате права приступа овом ресурсу.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Невалидан CSRF токен.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Време криптографског кључа је истекло.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Аутентификациони провајдер за подршку токена није пронађен.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Сесија није доступна, истекла је или су колачићи искључени.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Токен не може бити пронађен.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Корисничко име не може бити пронађено.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Налог је истекао.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Подаци за аутентификацију су истекли.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Налог је онемогућен.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Налог је закључан.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.sr_Latn.xlf b/Resources/translations/security.sr_Latn.xlf
deleted file mode 100644
index ddc4807..0000000
--- a/Resources/translations/security.sr_Latn.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Izuzetak pri autentifikaciji.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Autentifikacioni podaci nisu pronađeni.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Zahtev za autentifikaciju ne može biti obrađen zbog sistemskih problema.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Nevalidni podaci za autentifikaciju.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Kolačić je već iskorišćen od strane nekog drugog.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Nemate prava pristupa ovom resursu.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Nevalidan CSRF token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Vreme kriptografskog ključa je isteklo.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Autentifikacioni provajder za podršku tokena nije pronađen.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Sesija nije dostupna, istekla je ili su kolačići isključeni.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Token ne može biti pronađen.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Korisničko ime ne može biti pronađeno.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Nalog je istekao.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Podaci za autentifikaciju su istekli.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Nalog je onemogućen.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Nalog je zaključan.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.sv.xlf b/Resources/translations/security.sv.xlf
deleted file mode 100644
index b5f6209..0000000
--- a/Resources/translations/security.sv.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Ett autentiseringsfel har inträffat.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Uppgifterna för autentisering kunde inte hittas.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Autentiseringen kunde inte genomföras på grund av systemfel.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Felaktiga uppgifter.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookien har redan använts av någon annan.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Saknar rättigheter för resursen.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Ogiltig CSRF-token.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Förfallen digest nonce.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Ingen leverantör för autentisering hittades för angiven autentiseringstoken.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Ingen session finns tillgänglig, antingen har den förfallit eller är cookies inte aktiverat.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Ingen token kunde hittas.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Användarnamnet kunde inte hittas.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Kontot har förfallit.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Uppgifterna har förfallit.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Kontot är inaktiverat.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Kontot är låst.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.th.xlf b/Resources/translations/security.th.xlf
deleted file mode 100644
index a8cb8d5..0000000
--- a/Resources/translations/security.th.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>พบความผิดพลาดในการรับรองตัวตน</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>ไม่พบข้อมูลในการรับรองตัวตน (credentials) </target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>คำร้องในการรับรองตัวตนไม่สามารถดำเนินการได้ เนื่องมาจากปัญหาของระบบ</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>ข้อมูลการรับรองตัวตนไม่ถูกต้อง</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie ถูกใช้งานไปแล้วด้วยผู้อื่น</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>ไม่ได้รับสิทธิ์ให้ใช้งานส่วนนี้ได้</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>CSRF token ไม่ถูกต้อง</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Digest nonce หมดอายุ</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>ไม่พบ authentication provider ที่รองรับสำหรับ authentication token</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>ไม่มี session ที่พร้อมใช้งาน, Session หมดอายุไปแล้วหรือ cookies ไม่ถูกเปิดใช้งาน</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>ไม่พบ token</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>ไม่พบ Username</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>บัญชีหมดอายุไปแล้ว</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>ข้อมูลการระบุตัวตนหมดอายุแล้ว</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>บัญชีถูกระงับแล้ว</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>บัญชีถูกล็อกแล้ว</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.tr.xlf b/Resources/translations/security.tr.xlf
deleted file mode 100644
index 68c4421..0000000
--- a/Resources/translations/security.tr.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Bir yetkilendirme istisnası oluştu.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Kimlik bilgileri bulunamadı.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Bir sistem hatası nedeniyle yetkilendirme isteği işleme alınamıyor.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Geçersiz kimlik bilgileri.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Çerez bir başkası tarafından zaten kullanılmıştı.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Kaynak talebi için imtiyaz bulunamadı.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Geçersiz CSRF fişi.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Derleme zaman aşımına uğradı.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Yetkilendirme fişini destekleyecek yetkilendirme sağlayıcısı bulunamadı.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Oturum bulunamadı, zaman aşımına uğradı veya çerezler etkin değil.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Fiş bulunamadı.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Kullanıcı adı bulunamadı.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Hesap zaman aşımına uğradı.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Kimlik bilgileri zaman aşımına uğradı.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Hesap engellenmiş.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Hesap kilitlenmiş.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.ua.xlf b/Resources/translations/security.ua.xlf
deleted file mode 100644
index 7972121..0000000
--- a/Resources/translations/security.ua.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Помилка автентифікації.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Автентифікаційні дані не знайдено.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Запит на автентифікацію не може бути опрацьовано у зв’язку з проблемою в системі.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Невірні автентифікаційні дані.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Хтось інший вже використав цей сookie.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Відсутні права на запит цього ресурсу.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Невірний токен CSRF.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Закінчився термін дії одноразового ключа дайджесту.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Не знайдено провайдера автентифікації, що підтримує токен автентифікаціії.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Сесія недоступна, її час вийшов, або cookies вимкнено.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Токен не знайдено.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Ім’я користувача не знайдено.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Термін дії облікового запису вичерпано.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Термін дії автентифікаційних даних вичерпано.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Обліковий запис відключено.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Обліковий запис заблоковано.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.vi.xlf b/Resources/translations/security.vi.xlf
deleted file mode 100644
index b85a439..0000000
--- a/Resources/translations/security.vi.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>Có lỗi trong quá trình xác thực.</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>Thông tin dùng để xác thực không tìm thấy.</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>Yêu cầu xác thực không thể thực hiện do lỗi của hệ thống.</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>Thông tin dùng để xác thực không hợp lệ.</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie đã được dùng bởi người dùng khác.</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>Không được phép yêu cầu tài nguyên.</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>Mã CSRF không hợp lệ.</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>Mã dùng một lần đã hết hạn.</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>Không tìm thấy nhà cung cấp dịch vụ xác thực nào cho mã xác thực mà bạn sử dụng.</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Không tìm thấy phiên làm việc. Phiên làm việc hoặc cookie có thể bị tắt.</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>Không tìm thấy mã token.</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>Không tìm thấy tên người dùng username.</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>Tài khoản đã hết hạn.</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>Thông tin xác thực đã hết hạn.</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>Tài khoản bị tạm ngừng.</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>Tài khoản bị khóa.</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Resources/translations/security.zh_CN.xlf b/Resources/translations/security.zh_CN.xlf
deleted file mode 100644
index 2d6affe..0000000
--- a/Resources/translations/security.zh_CN.xlf
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
- <file source-language="en" datatype="plaintext" original="file.ext">
- <body>
- <trans-unit id="1">
- <source>An authentication exception occurred.</source>
- <target>身份验证发生异常。</target>
- </trans-unit>
- <trans-unit id="2">
- <source>Authentication credentials could not be found.</source>
- <target>没有找到身份验证的凭证。</target>
- </trans-unit>
- <trans-unit id="3">
- <source>Authentication request could not be processed due to a system problem.</source>
- <target>由于系统故障,身份验证的请求无法被处理。</target>
- </trans-unit>
- <trans-unit id="4">
- <source>Invalid credentials.</source>
- <target>无效的凭证。</target>
- </trans-unit>
- <trans-unit id="5">
- <source>Cookie has already been used by someone else.</source>
- <target>Cookie 已经被其他人使用。</target>
- </trans-unit>
- <trans-unit id="6">
- <source>Not privileged to request the resource.</source>
- <target>没有权限请求此资源。</target>
- </trans-unit>
- <trans-unit id="7">
- <source>Invalid CSRF token.</source>
- <target>无效的 CSRF token 。</target>
- </trans-unit>
- <trans-unit id="8">
- <source>Digest nonce has expired.</source>
- <target>摘要随机串(digest nonce)已过期。</target>
- </trans-unit>
- <trans-unit id="9">
- <source>No authentication provider found to support the authentication token.</source>
- <target>没有找到支持此 token 的身份验证服务提供方。</target>
- </trans-unit>
- <trans-unit id="10">
- <source>No session available, it either timed out or cookies are not enabled.</source>
- <target>Session 不可用。会话超时或没有启用 cookies 。</target>
- </trans-unit>
- <trans-unit id="11">
- <source>No token could be found.</source>
- <target>找不到 token 。</target>
- </trans-unit>
- <trans-unit id="12">
- <source>Username could not be found.</source>
- <target>找不到用户名。</target>
- </trans-unit>
- <trans-unit id="13">
- <source>Account has expired.</source>
- <target>帐号已过期。</target>
- </trans-unit>
- <trans-unit id="14">
- <source>Credentials have expired.</source>
- <target>凭证已过期。</target>
- </trans-unit>
- <trans-unit id="15">
- <source>Account is disabled.</source>
- <target>帐号已被禁用。</target>
- </trans-unit>
- <trans-unit id="16">
- <source>Account is locked.</source>
- <target>帐号已被锁定。</target>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/Tests/Http/Firewall/UsernamePasswordFormAuthenticationListenerTest.php b/Tests/Http/Firewall/UsernamePasswordFormAuthenticationListenerTest.php
index b7c6ab9..eca14d3 100644
--- a/Tests/Http/Firewall/UsernamePasswordFormAuthenticationListenerTest.php
+++ b/Tests/Http/Firewall/UsernamePasswordFormAuthenticationListenerTest.php
@@ -14,7 +14,7 @@ namespace Symfony\Component\Security\Tests\Http\Firewall;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener;
-use Symfony\Component\Security\Core\SecurityContextInterface;
+use Symfony\Component\Security\Core\Security;
class UsernamePasswordFormAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
{
@@ -48,7 +48,7 @@ class UsernamePasswordFormAuthenticationListenerTest extends \PHPUnit_Framework_
;
$listener = new UsernamePasswordFormAuthenticationListener(
- $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface'),
+ $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface'),
$authenticationManager,
$this->getMock('Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface'),
$httpUtils,
@@ -71,8 +71,8 @@ class UsernamePasswordFormAuthenticationListenerTest extends \PHPUnit_Framework_
public function getUsernameForLength()
{
return array(
- array(str_repeat('x', SecurityContextInterface::MAX_USERNAME_LENGTH + 1), false),
- array(str_repeat('x', SecurityContextInterface::MAX_USERNAME_LENGTH - 1), true),
+ array(str_repeat('x', Security::MAX_USERNAME_LENGTH + 1), false),
+ array(str_repeat('x', Security::MAX_USERNAME_LENGTH - 1), true),
);
}
}
diff --git a/Tests/Resources/TranslationFilesTest.php b/Tests/Resources/TranslationFilesTest.php
deleted file mode 100644
index 341ec87..0000000
--- a/Tests/Resources/TranslationFilesTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Tests\Resources;
-
-class TranslationFilesTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * @dataProvider provideTranslationFiles
- */
- public function testTranslationFileIsValid($filePath)
- {
- \PHPUnit_Util_XML::loadfile($filePath, false, false, true);
- }
-
- public function provideTranslationFiles()
- {
- return array_map(
- function ($filePath) { return (array) $filePath; },
- glob(dirname(dirname(__DIR__)).'/Resources/translations/*.xlf')
- );
- }
-}
diff --git a/Tests/TranslationSyncStatusTest.php b/Tests/TranslationSyncStatusTest.php
deleted file mode 100644
index 4b72d41..0000000
--- a/Tests/TranslationSyncStatusTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\Tests;
-
-use Symfony\Component\Finder\Finder;
-
-class TranslationSyncStatusTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * @dataProvider getTranslationDirectoriesData
- */
- public function testTranslationFileIsNotMissingInCore($dir1, $dir2)
- {
- $finder = new Finder();
- $files = $finder->in($dir1)->files();
-
- foreach ($files as $file) {
- $this->assertFileExists($dir2.'/'.$file->getFilename(), 'Missing file '.$file->getFilename().' in directory '.$dir2);
- }
- }
-
- public function getTranslationDirectoriesData()
- {
- $legacyTranslationsDir = $this->getLegacyTranslationsDirectory();
- $coreTranslationsDir = $this->getCoreTranslationsDirectory();
-
- return array(
- 'file-not-missing-in-core' => array($legacyTranslationsDir, $coreTranslationsDir),
- 'file-not-added-in-core' => array($coreTranslationsDir, $legacyTranslationsDir),
- );
- }
-
- public function testFileContentsAreEqual()
- {
- $finder = new Finder();
- $files = $finder->in($this->getLegacyTranslationsDirectory())->files();
-
- foreach ($files as $file) {
- $coreFile = $this->getCoreTranslationsDirectory().'/'.$file->getFilename();
-
- $this->assertFileEquals($file->getRealPath(), $coreFile, $file.' and '.$coreFile.' have equal content.');
- }
- }
-
- private function getLegacyTranslationsDirectory()
- {
- return __DIR__.'/../Resources/translations';
- }
-
- private function getCoreTranslationsDirectory()
- {
- return __DIR__.'/../Core/Resources/translations';
- }
-}
diff --git a/composer.json b/composer.json
index 3eab48b..7b3801f 100644
--- a/composer.json
+++ b/composer.json
@@ -16,16 +16,14 @@
}
],
"require": {
- "php": ">=5.3.9",
- "symfony/security-acl": "~2.7|~3.0.0",
- "symfony/event-dispatcher": "~2.2|~3.0.0",
- "symfony/http-foundation": "~2.1|~3.0.0",
- "symfony/http-kernel": "~2.4|~3.0.0",
- "symfony/polyfill-php55": "~1.0",
+ "php": ">=5.5.9",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/http-foundation": "~2.8|~3.0",
+ "symfony/http-kernel": "~2.8|~3.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.0",
"symfony/polyfill-util": "~1.0",
- "symfony/property-access": "~2.3|~3.0.0"
+ "symfony/property-access": "~2.8|~3.0"
},
"replace": {
"symfony/security-core": "self.version",
@@ -34,13 +32,13 @@
"symfony/security-http": "self.version"
},
"require-dev": {
- "symfony/finder": "~2.3|~3.0.0",
+ "symfony/finder": "~2.8|~3.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/routing": "~2.2|~3.0.0",
- "symfony/validator": "~2.5,>=2.5.9|~3.0.0",
- "psr/log": "~1.0",
- "symfony/expression-language": "~2.6|~3.0.0",
- "symfony/ldap": "~2.8|~3.0.0"
+ "symfony/routing": "~2.8|~3.0",
+ "symfony/validator": "~2.8|~3.0",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/ldap": "~3.1",
+ "psr/log": "~1.0"
},
"suggest": {
"symfony/form": "",
@@ -58,7 +56,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "2.8-dev"
+ "dev-master": "3.1-dev"
}
}
}