diff options
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 539dcda..d5f3176 100644 --- a/Core/Authorization/Voter/RoleVoter.php +++ b/Core/Authorization/Voter/RoleVoter.php @@ -36,23 +36,7 @@ class RoleVoter implements VoterInterface /** * {@inheritdoc} */ - public function supportsAttribute($attribute) - { - return is_string($attribute) && 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); @@ -62,7 +46,7 @@ class RoleVoter implements VoterInterface $attribute = $attribute->getRole(); } - if (!$this->supportsAttribute($attribute)) { + if (!is_string($attribute) || 0 !== strpos($attribute, $this->prefix)) { continue; } diff --git a/Core/Authorization/Voter/Voter.php b/Core/Authorization/Voter/Voter.php index 2396b1e..0641486 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 e10941f..8278ef3 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 c15e936..45535ca 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 4e8066b..3c9604e 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(false) && !$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" } } } |