Initial commit
This commit is contained in:
3
core/vendor/symfony/security/.gitignore
vendored
Normal file
3
core/vendor/symfony/security/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
vendor/
|
||||
composer.lock
|
||||
phpunit.xml
|
||||
96
core/vendor/symfony/security/CHANGELOG.md
vendored
Normal file
96
core/vendor/symfony/security/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
2.8.0
|
||||
-----
|
||||
|
||||
* deprecated `getKey()` of the `AnonymousToken`, `RememberMeToken`,
|
||||
`AbstractRememberMeServices` and `DigestAuthenticationEntryPoint` classes in favor of `getSecret()`.
|
||||
* deprecated `Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface`, use
|
||||
`Symfony\Component\Security\Http\Authentication\SimplePreAuthenticatorInterface` instead
|
||||
* deprecated `Symfony\Component\Security\Core\Authentication\SimpleFormAuthenticatorInterface`, use
|
||||
`Symfony\Component\Security\Http\Authentication\SimpleFormAuthenticatorInterface` instead
|
||||
* deprecated `Symfony\Component\Security\Core\Util\ClassUtils`, use
|
||||
`Symfony\Component\Security\Acl\Util\ClassUtils` instead
|
||||
* deprecated the `Symfony\Component\Security\Core\Util\SecureRandom` class in favor of the `random_bytes()` function
|
||||
* deprecated `supportsAttribute()` and `supportsClass()` methods of
|
||||
`Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface` and
|
||||
`Symfony\Component\Security\Core\Authorization\Voter\VoterInterface`.
|
||||
* deprecated `getSupportedAttributes()` and `getSupportedClasses()` methods of
|
||||
`Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter`, use `supports()` instead.
|
||||
* deprecated the `intention` option for all the authentication listeners,
|
||||
use the `csrf_token_id` option instead.
|
||||
|
||||
2.7.0
|
||||
-----
|
||||
|
||||
* added LogoutUrlGenerator
|
||||
* added the triggering of the `Symfony\Component\Security\Http\SecurityEvents::INTERACTIVE_LOGIN` in `Symfony\Component\Security\Http\Firewall\SimplePreAuthenticationListener`
|
||||
* The MaskBuilder logic has been abstracted in the `Symfony\Component\Security\Acl\Permission\AbstractMaskBuilder`
|
||||
and described in the `Symfony\Component\Security\Acl\Permission\MaskBuilderInterface`
|
||||
* added interface `Symfony\Component\Security\Acl\Permission\MaskBuilderRetrievalInterface`
|
||||
|
||||
2.6.0
|
||||
-----
|
||||
|
||||
* added Symfony\Component\Security\Http\Authentication\AuthenticationUtils
|
||||
* Deprecated the `SecurityContext` class in favor of the `AuthorizationChecker` and `TokenStorage` classes
|
||||
|
||||
2.4.0
|
||||
-----
|
||||
|
||||
* Translations in the `src/Symfony/Component/Security/Resources/translations/` directory are deprecated, ones in `src/Symfony/Component/Security/Core/Resources/translations/` must be used instead.
|
||||
* The switch user listener now preserves the query string when switching a user
|
||||
* The remember-me cookie hashes now use HMAC, which means that current cookies will be invalidated
|
||||
* added simpler customization options
|
||||
* structured component into three sub-components Acl, Core and Http
|
||||
* added Csrf sub-component
|
||||
* changed Http sub-component to depend on Csrf sub-component instead of the Form component
|
||||
|
||||
2.3.0
|
||||
-----
|
||||
|
||||
* [BC BREAK] the BCrypt encoder constructor signature has changed (the first argument was removed)
|
||||
To use the BCrypt encoder, you now need PHP 5.5 or "ircmaxell/password-compat" as a composer dependency
|
||||
* [BC BREAK] return 401 instead of 500 when using use_forward during for form authentication
|
||||
* added a `require_previous_session` option to `AbstractAuthenticationListener`
|
||||
|
||||
2.2.0
|
||||
-----
|
||||
|
||||
* `Symfony\Component\Security\Http\Firewall` and
|
||||
`Symfony\Component\Security\Http\RememberMe\ResponseListener` now
|
||||
implements EventSubscriberInterface
|
||||
* added secure random number generator
|
||||
* added PBKDF2 Password encoder
|
||||
* added BCrypt password encoder
|
||||
|
||||
2.1.0
|
||||
-----
|
||||
|
||||
* [BC BREAK] The signature of ExceptionListener has changed
|
||||
* changed the HttpUtils constructor signature to take a UrlGenerator and a UrlMatcher instead of a Router
|
||||
* EncoderFactoryInterface::getEncoder() can now also take a class name as an argument
|
||||
* allow switching to the user that is already impersonated
|
||||
* added support for the remember_me parameter in the query
|
||||
* added AccessMapInterface
|
||||
* [BC BREAK] moved user comparison logic out of UserInterface
|
||||
* made the logout path check configurable
|
||||
* after login, the user is now redirected to `default_target_path` if
|
||||
`use_referer` is true and the referrer is the `login_path`.
|
||||
* added a way to remove a token from a session
|
||||
* [BC BREAK] changed `MutableAclInterface::setParentAcl` to accept `null`,
|
||||
review your implementation to reflect this change.
|
||||
* `ObjectIdentity::fromDomainObject`, `UserSecurityIdentity::fromAccount` and
|
||||
`UserSecurityIdentity::fromToken` now return correct identities for proxies
|
||||
objects (e.g. Doctrine proxies)
|
||||
* [BC BREAK] moved the default authentication success and failure handling to
|
||||
separate classes. The order of arguments in the constructor of the
|
||||
`AbstractAuthenticationListener` has changed.
|
||||
* [BC BREAK] moved the default logout success handling to a separate class. The
|
||||
order of arguments in the constructor of `LogoutListener` has changed.
|
||||
* [BC BREAK] The constructor of `AuthenticationException` and all child
|
||||
classes now matches the constructor of `\Exception`. The extra information
|
||||
getters and setters are removed. There are now dedicated getters/setters for
|
||||
token (`AuthenticationException'), user (`AccountStatusException`) and
|
||||
username (`UsernameNotFoundException`).
|
||||
3
core/vendor/symfony/security/Core/.gitignore
vendored
Normal file
3
core/vendor/symfony/security/Core/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
vendor/
|
||||
composer.lock
|
||||
phpunit.xml
|
||||
35
core/vendor/symfony/security/Core/Authentication/AuthenticationManagerInterface.php
vendored
Normal file
35
core/vendor/symfony/security/Core/Authentication/AuthenticationManagerInterface.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?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\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
|
||||
/**
|
||||
* AuthenticationManagerInterface is the interface for authentication managers,
|
||||
* which process Token authentication.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
interface AuthenticationManagerInterface
|
||||
{
|
||||
/**
|
||||
* Attempts to authenticate a TokenInterface object.
|
||||
*
|
||||
* @param TokenInterface $token The TokenInterface instance to authenticate
|
||||
*
|
||||
* @return TokenInterface An authenticated TokenInterface instance, never null
|
||||
*
|
||||
* @throws AuthenticationException if the authentication fails
|
||||
*/
|
||||
public function authenticate(TokenInterface $token);
|
||||
}
|
||||
118
core/vendor/symfony/security/Core/Authentication/AuthenticationProviderManager.php
vendored
Normal file
118
core/vendor/symfony/security/Core/Authentication/AuthenticationProviderManager.php
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
<?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\Security\Core\Event\AuthenticationFailureEvent;
|
||||
use Symfony\Component\Security\Core\Event\AuthenticationEvent;
|
||||
use Symfony\Component\Security\Core\AuthenticationEvents;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AccountStatusException;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Exception\ProviderNotFoundException;
|
||||
use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AuthenticationProviderManager uses a list of AuthenticationProviderInterface
|
||||
* instances to authenticate a Token.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class AuthenticationProviderManager implements AuthenticationManagerInterface
|
||||
{
|
||||
private $providers;
|
||||
private $eraseCredentials;
|
||||
private $eventDispatcher;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AuthenticationProviderInterface[] $providers An array of AuthenticationProviderInterface instances
|
||||
* @param bool $eraseCredentials Whether to erase credentials after authentication or not
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(array $providers, $eraseCredentials = true)
|
||||
{
|
||||
if (!$providers) {
|
||||
throw new \InvalidArgumentException('You must at least add one authentication provider.');
|
||||
}
|
||||
|
||||
foreach ($providers as $provider) {
|
||||
if (!$provider instanceof AuthenticationProviderInterface) {
|
||||
throw new \InvalidArgumentException(sprintf('Provider "%s" must implement the AuthenticationProviderInterface.', get_class($provider)));
|
||||
}
|
||||
}
|
||||
|
||||
$this->providers = $providers;
|
||||
$this->eraseCredentials = (bool) $eraseCredentials;
|
||||
}
|
||||
|
||||
public function setEventDispatcher(EventDispatcherInterface $dispatcher)
|
||||
{
|
||||
$this->eventDispatcher = $dispatcher;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
$lastException = null;
|
||||
$result = null;
|
||||
|
||||
foreach ($this->providers as $provider) {
|
||||
if (!$provider->supports($token)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $provider->authenticate($token);
|
||||
|
||||
if (null !== $result) {
|
||||
break;
|
||||
}
|
||||
} catch (AccountStatusException $e) {
|
||||
$e->setToken($token);
|
||||
|
||||
throw $e;
|
||||
} catch (AuthenticationException $e) {
|
||||
$lastException = $e;
|
||||
}
|
||||
}
|
||||
|
||||
if (null !== $result) {
|
||||
if (true === $this->eraseCredentials) {
|
||||
$result->eraseCredentials();
|
||||
}
|
||||
|
||||
if (null !== $this->eventDispatcher) {
|
||||
$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_SUCCESS, new AuthenticationEvent($result));
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
if (null === $lastException) {
|
||||
$lastException = new ProviderNotFoundException(sprintf('No Authentication Provider found for token of class "%s".', get_class($token)));
|
||||
}
|
||||
|
||||
if (null !== $this->eventDispatcher) {
|
||||
$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException));
|
||||
}
|
||||
|
||||
$lastException->setToken($token);
|
||||
|
||||
throw $lastException;
|
||||
}
|
||||
}
|
||||
73
core/vendor/symfony/security/Core/Authentication/AuthenticationTrustResolver.php
vendored
Normal file
73
core/vendor/symfony/security/Core/Authentication/AuthenticationTrustResolver.php
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
<?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\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* The default implementation of the authentication trust resolver.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class AuthenticationTrustResolver implements AuthenticationTrustResolverInterface
|
||||
{
|
||||
private $anonymousClass;
|
||||
private $rememberMeClass;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $anonymousClass
|
||||
* @param string $rememberMeClass
|
||||
*/
|
||||
public function __construct($anonymousClass, $rememberMeClass)
|
||||
{
|
||||
$this->anonymousClass = $anonymousClass;
|
||||
$this->rememberMeClass = $rememberMeClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isAnonymous(TokenInterface $token = null)
|
||||
{
|
||||
if (null === $token) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $token instanceof $this->anonymousClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isRememberMe(TokenInterface $token = null)
|
||||
{
|
||||
if (null === $token) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $token instanceof $this->rememberMeClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isFullFledged(TokenInterface $token = null)
|
||||
{
|
||||
if (null === $token) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !$this->isAnonymous($token) && !$this->isRememberMe($token);
|
||||
}
|
||||
}
|
||||
53
core/vendor/symfony/security/Core/Authentication/AuthenticationTrustResolverInterface.php
vendored
Normal file
53
core/vendor/symfony/security/Core/Authentication/AuthenticationTrustResolverInterface.php
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
<?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\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* Interface for resolving the authentication status of a given token.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface AuthenticationTrustResolverInterface
|
||||
{
|
||||
/**
|
||||
* Resolves whether the passed token implementation is authenticated
|
||||
* anonymously.
|
||||
*
|
||||
* If null is passed, the method must return false.
|
||||
*
|
||||
* @param TokenInterface $token
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isAnonymous(TokenInterface $token = null);
|
||||
|
||||
/**
|
||||
* Resolves whether the passed token implementation is authenticated
|
||||
* using remember-me capabilities.
|
||||
*
|
||||
* @param TokenInterface $token
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isRememberMe(TokenInterface $token = null);
|
||||
|
||||
/**
|
||||
* Resolves whether the passed token implementation is fully authenticated.
|
||||
*
|
||||
* @param TokenInterface $token
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isFullFledged(TokenInterface $token = null);
|
||||
}
|
||||
66
core/vendor/symfony/security/Core/Authentication/Provider/AnonymousAuthenticationProvider.php
vendored
Normal file
66
core/vendor/symfony/security/Core/Authentication/Provider/AnonymousAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
|
||||
|
||||
/**
|
||||
* AnonymousAuthenticationProvider validates AnonymousToken instances.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class AnonymousAuthenticationProvider implements AuthenticationProviderInterface
|
||||
{
|
||||
/**
|
||||
* Used to determine if the token is created by the application
|
||||
* instead of a malicious client.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $secret;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $secret The secret shared with the AnonymousToken
|
||||
*/
|
||||
public function __construct($secret)
|
||||
{
|
||||
$this->secret = $secret;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
if (!$this->supports($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->secret !== $token->getSecret()) {
|
||||
throw new BadCredentialsException('The Token does not contain the expected key.');
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supports(TokenInterface $token)
|
||||
{
|
||||
return $token instanceof AnonymousToken;
|
||||
}
|
||||
}
|
||||
35
core/vendor/symfony/security/Core/Authentication/Provider/AuthenticationProviderInterface.php
vendored
Normal file
35
core/vendor/symfony/security/Core/Authentication/Provider/AuthenticationProviderInterface.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
|
||||
|
||||
/**
|
||||
* AuthenticationProviderInterface is the interface for all authentication
|
||||
* providers.
|
||||
*
|
||||
* Concrete implementations processes specific Token instances.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
interface AuthenticationProviderInterface extends AuthenticationManagerInterface
|
||||
{
|
||||
/**
|
||||
* Checks whether this provider supports the given token.
|
||||
*
|
||||
* @param TokenInterface $token A TokenInterface instance
|
||||
*
|
||||
* @return bool true if the implementation supports the Token, false otherwise
|
||||
*/
|
||||
public function supports(TokenInterface $token);
|
||||
}
|
||||
99
core/vendor/symfony/security/Core/Authentication/Provider/DaoAuthenticationProvider.php
vendored
Normal file
99
core/vendor/symfony/security/Core/Authentication/Provider/DaoAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
|
||||
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
||||
use Symfony\Component\Security\Core\User\UserCheckerInterface;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationServiceException;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||
|
||||
/**
|
||||
* DaoAuthenticationProvider uses a UserProviderInterface to retrieve the user
|
||||
* for a UsernamePasswordToken.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class DaoAuthenticationProvider extends UserAuthenticationProvider
|
||||
{
|
||||
private $encoderFactory;
|
||||
private $userProvider;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserProviderInterface $userProvider An UserProviderInterface instance
|
||||
* @param UserCheckerInterface $userChecker An UserCheckerInterface instance
|
||||
* @param string $providerKey The provider key
|
||||
* @param EncoderFactoryInterface $encoderFactory An EncoderFactoryInterface instance
|
||||
* @param bool $hideUserNotFoundExceptions Whether to hide user not found exception or not
|
||||
*/
|
||||
public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, $providerKey, EncoderFactoryInterface $encoderFactory, $hideUserNotFoundExceptions = true)
|
||||
{
|
||||
parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions);
|
||||
|
||||
$this->encoderFactory = $encoderFactory;
|
||||
$this->userProvider = $userProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function checkAuthentication(UserInterface $user, UsernamePasswordToken $token)
|
||||
{
|
||||
$currentUser = $token->getUser();
|
||||
if ($currentUser instanceof UserInterface) {
|
||||
if ($currentUser->getPassword() !== $user->getPassword()) {
|
||||
throw new BadCredentialsException('The credentials were changed from another session.');
|
||||
}
|
||||
} else {
|
||||
if ('' === ($presentedPassword = $token->getCredentials())) {
|
||||
throw new BadCredentialsException('The presented password cannot be empty.');
|
||||
}
|
||||
|
||||
if (!$this->encoderFactory->getEncoder($user)->isPasswordValid($user->getPassword(), $presentedPassword, $user->getSalt())) {
|
||||
throw new BadCredentialsException('The presented password is invalid.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function retrieveUser($username, UsernamePasswordToken $token)
|
||||
{
|
||||
$user = $token->getUser();
|
||||
if ($user instanceof UserInterface) {
|
||||
return $user;
|
||||
}
|
||||
|
||||
try {
|
||||
$user = $this->userProvider->loadUserByUsername($username);
|
||||
|
||||
if (!$user instanceof UserInterface) {
|
||||
throw new AuthenticationServiceException('The user provider must return a UserInterface object.');
|
||||
}
|
||||
|
||||
return $user;
|
||||
} catch (UsernameNotFoundException $e) {
|
||||
$e->setUsername($username);
|
||||
throw $e;
|
||||
} catch (\Exception $e) {
|
||||
$e = new AuthenticationServiceException($e->getMessage(), 0, $e);
|
||||
$e->setToken($token);
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
85
core/vendor/symfony/security/Core/Authentication/Provider/LdapBindAuthenticationProvider.php
vendored
Normal file
85
core/vendor/symfony/security/Core/Authentication/Provider/LdapBindAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
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\Exception\ConnectionException;
|
||||
|
||||
/**
|
||||
* LdapBindAuthenticationProvider authenticates a user against an LDAP server.
|
||||
*
|
||||
* The only way to check user credentials is to try to connect the user with its
|
||||
* credentials to the ldap.
|
||||
*
|
||||
* @author Charles Sarrazin <charles@sarraz.in>
|
||||
*/
|
||||
class LdapBindAuthenticationProvider extends UserAuthenticationProvider
|
||||
{
|
||||
private $userProvider;
|
||||
private $ldap;
|
||||
private $dnString;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserProviderInterface $userProvider A UserProvider
|
||||
* @param UserCheckerInterface $userChecker A UserChecker
|
||||
* @param string $providerKey The provider key
|
||||
* @param LdapClientInterface $ldap An 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)
|
||||
{
|
||||
parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions);
|
||||
|
||||
$this->userProvider = $userProvider;
|
||||
$this->ldap = $ldap;
|
||||
$this->dnString = $dnString;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function retrieveUser($username, UsernamePasswordToken $token)
|
||||
{
|
||||
if ('NONE_PROVIDED' === $username) {
|
||||
throw new UsernameNotFoundException('Username can not be null');
|
||||
}
|
||||
|
||||
return $this->userProvider->loadUserByUsername($username);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function checkAuthentication(UserInterface $user, UsernamePasswordToken $token)
|
||||
{
|
||||
$username = $token->getUsername();
|
||||
$password = $token->getCredentials();
|
||||
|
||||
try {
|
||||
$username = $this->ldap->escape($username, '', LDAP_ESCAPE_DN);
|
||||
$dn = str_replace('{username}', $username, $this->dnString);
|
||||
|
||||
$this->ldap->bind($dn, $password);
|
||||
} catch (ConnectionException $e) {
|
||||
throw new BadCredentialsException('The presented password is invalid.');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
||||
use Symfony\Component\Security\Core\User\UserCheckerInterface;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* Processes a pre-authenticated authentication request.
|
||||
*
|
||||
* This authentication provider will not perform any checks on authentication
|
||||
* requests, as they should already be pre-authenticated. However, the
|
||||
* UserProviderInterface implementation may still throw a
|
||||
* UsernameNotFoundException, for example.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class PreAuthenticatedAuthenticationProvider implements AuthenticationProviderInterface
|
||||
{
|
||||
private $userProvider;
|
||||
private $userChecker;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserProviderInterface $userProvider An UserProviderInterface instance
|
||||
* @param UserCheckerInterface $userChecker An UserCheckerInterface instance
|
||||
* @param string $providerKey The provider key
|
||||
*/
|
||||
public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, $providerKey)
|
||||
{
|
||||
$this->userProvider = $userProvider;
|
||||
$this->userChecker = $userChecker;
|
||||
$this->providerKey = $providerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
if (!$this->supports($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$user = $token->getUser()) {
|
||||
throw new BadCredentialsException('No pre-authenticated principal found in request.');
|
||||
}
|
||||
|
||||
$user = $this->userProvider->loadUserByUsername($user);
|
||||
|
||||
$this->userChecker->checkPostAuth($user);
|
||||
|
||||
$authenticatedToken = new PreAuthenticatedToken($user, $token->getCredentials(), $this->providerKey, $user->getRoles());
|
||||
$authenticatedToken->setAttributes($token->getAttributes());
|
||||
|
||||
return $authenticatedToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supports(TokenInterface $token)
|
||||
{
|
||||
return $token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey();
|
||||
}
|
||||
}
|
||||
68
core/vendor/symfony/security/Core/Authentication/Provider/RememberMeAuthenticationProvider.php
vendored
Normal file
68
core/vendor/symfony/security/Core/Authentication/Provider/RememberMeAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserCheckerInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\RememberMeToken;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
|
||||
class RememberMeAuthenticationProvider implements AuthenticationProviderInterface
|
||||
{
|
||||
private $userChecker;
|
||||
private $secret;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserCheckerInterface $userChecker An UserCheckerInterface interface
|
||||
* @param string $secret A secret
|
||||
* @param string $providerKey A provider secret
|
||||
*/
|
||||
public function __construct(UserCheckerInterface $userChecker, $secret, $providerKey)
|
||||
{
|
||||
$this->userChecker = $userChecker;
|
||||
$this->secret = $secret;
|
||||
$this->providerKey = $providerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
if (!$this->supports($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->secret !== $token->getSecret()) {
|
||||
throw new BadCredentialsException('The presented secret does not match.');
|
||||
}
|
||||
|
||||
$user = $token->getUser();
|
||||
$this->userChecker->checkPreAuth($user);
|
||||
|
||||
$authenticatedToken = new RememberMeToken($user, $this->providerKey, $this->secret);
|
||||
$authenticatedToken->setAttributes($token->getAttributes());
|
||||
|
||||
return $authenticatedToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supports(TokenInterface $token)
|
||||
{
|
||||
return $token instanceof RememberMeToken && $token->getProviderKey() === $this->providerKey;
|
||||
}
|
||||
}
|
||||
50
core/vendor/symfony/security/Core/Authentication/Provider/SimpleAuthenticationProvider.php
vendored
Normal file
50
core/vendor/symfony/security/Core/Authentication/Provider/SimpleAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\SimpleAuthenticatorInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
|
||||
/**
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
*/
|
||||
class SimpleAuthenticationProvider implements AuthenticationProviderInterface
|
||||
{
|
||||
private $simpleAuthenticator;
|
||||
private $userProvider;
|
||||
private $providerKey;
|
||||
|
||||
public function __construct(SimpleAuthenticatorInterface $simpleAuthenticator, UserProviderInterface $userProvider, $providerKey)
|
||||
{
|
||||
$this->simpleAuthenticator = $simpleAuthenticator;
|
||||
$this->userProvider = $userProvider;
|
||||
$this->providerKey = $providerKey;
|
||||
}
|
||||
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
$authToken = $this->simpleAuthenticator->authenticateToken($token, $this->userProvider, $this->providerKey);
|
||||
|
||||
if ($authToken instanceof TokenInterface) {
|
||||
return $authToken;
|
||||
}
|
||||
|
||||
throw new AuthenticationException('Simple authenticator failed to return an authenticated token.');
|
||||
}
|
||||
|
||||
public function supports(TokenInterface $token)
|
||||
{
|
||||
return $this->simpleAuthenticator->supportsToken($token, $this->providerKey);
|
||||
}
|
||||
}
|
||||
155
core/vendor/symfony/security/Core/Authentication/Provider/UserAuthenticationProvider.php
vendored
Normal file
155
core/vendor/symfony/security/Core/Authentication/Provider/UserAuthenticationProvider.php
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
<?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\Provider;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Core\User\UserCheckerInterface;
|
||||
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationServiceException;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Role\SwitchUserRole;
|
||||
|
||||
/**
|
||||
* UserProviderInterface retrieves users for UsernamePasswordToken tokens.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
abstract class UserAuthenticationProvider implements AuthenticationProviderInterface
|
||||
{
|
||||
private $hideUserNotFoundExceptions;
|
||||
private $userChecker;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserCheckerInterface $userChecker An UserCheckerInterface interface
|
||||
* @param string $providerKey A provider key
|
||||
* @param bool $hideUserNotFoundExceptions Whether to hide user not found exception or not
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(UserCheckerInterface $userChecker, $providerKey, $hideUserNotFoundExceptions = true)
|
||||
{
|
||||
if (empty($providerKey)) {
|
||||
throw new \InvalidArgumentException('$providerKey must not be empty.');
|
||||
}
|
||||
|
||||
$this->userChecker = $userChecker;
|
||||
$this->providerKey = $providerKey;
|
||||
$this->hideUserNotFoundExceptions = $hideUserNotFoundExceptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(TokenInterface $token)
|
||||
{
|
||||
if (!$this->supports($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$username = $token->getUsername();
|
||||
if ('' === $username || null === $username) {
|
||||
$username = 'NONE_PROVIDED';
|
||||
}
|
||||
|
||||
try {
|
||||
$user = $this->retrieveUser($username, $token);
|
||||
} catch (UsernameNotFoundException $e) {
|
||||
if ($this->hideUserNotFoundExceptions) {
|
||||
throw new BadCredentialsException('Bad credentials.', 0, $e);
|
||||
}
|
||||
$e->setUsername($username);
|
||||
|
||||
throw $e;
|
||||
}
|
||||
|
||||
if (!$user instanceof UserInterface) {
|
||||
throw new AuthenticationServiceException('retrieveUser() must return a UserInterface.');
|
||||
}
|
||||
|
||||
try {
|
||||
$this->userChecker->checkPreAuth($user);
|
||||
$this->checkAuthentication($user, $token);
|
||||
$this->userChecker->checkPostAuth($user);
|
||||
} catch (BadCredentialsException $e) {
|
||||
if ($this->hideUserNotFoundExceptions) {
|
||||
throw new BadCredentialsException('Bad credentials.', 0, $e);
|
||||
}
|
||||
|
||||
throw $e;
|
||||
}
|
||||
|
||||
$authenticatedToken = new UsernamePasswordToken($user, $token->getCredentials(), $this->providerKey, $this->getRoles($user, $token));
|
||||
$authenticatedToken->setAttributes($token->getAttributes());
|
||||
|
||||
return $authenticatedToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supports(TokenInterface $token)
|
||||
{
|
||||
return $token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves roles from user and appends SwitchUserRole if original token contained one.
|
||||
*
|
||||
* @param UserInterface $user The user
|
||||
* @param TokenInterface $token The token
|
||||
*
|
||||
* @return array The user roles
|
||||
*/
|
||||
private function getRoles(UserInterface $user, TokenInterface $token)
|
||||
{
|
||||
$roles = $user->getRoles();
|
||||
|
||||
foreach ($token->getRoles() as $role) {
|
||||
if ($role instanceof SwitchUserRole) {
|
||||
$roles[] = $role;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $roles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the user from an implementation-specific location.
|
||||
*
|
||||
* @param string $username The username to retrieve
|
||||
* @param UsernamePasswordToken $token The Token
|
||||
*
|
||||
* @return UserInterface The user
|
||||
*
|
||||
* @throws AuthenticationException if the credentials could not be validated
|
||||
*/
|
||||
abstract protected function retrieveUser($username, UsernamePasswordToken $token);
|
||||
|
||||
/**
|
||||
* Does additional checks on the user and token (like validating the
|
||||
* credentials).
|
||||
*
|
||||
* @param UserInterface $user The retrieved UserInterface instance
|
||||
* @param UsernamePasswordToken $token The UsernamePasswordToken token to be authenticated
|
||||
*
|
||||
* @throws AuthenticationException if the credentials could not be validated
|
||||
*/
|
||||
abstract protected function checkAuthentication(UserInterface $user, UsernamePasswordToken $token);
|
||||
}
|
||||
71
core/vendor/symfony/security/Core/Authentication/RememberMe/InMemoryTokenProvider.php
vendored
Normal file
71
core/vendor/symfony/security/Core/Authentication/RememberMe/InMemoryTokenProvider.php
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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\RememberMe;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\TokenNotFoundException;
|
||||
|
||||
/**
|
||||
* This class is used for testing purposes, and is not really suited for production.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class InMemoryTokenProvider implements TokenProviderInterface
|
||||
{
|
||||
private $tokens = array();
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function loadTokenBySeries($series)
|
||||
{
|
||||
if (!isset($this->tokens[$series])) {
|
||||
throw new TokenNotFoundException('No token found.');
|
||||
}
|
||||
|
||||
return $this->tokens[$series];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function updateToken($series, $tokenValue, \DateTime $lastUsed)
|
||||
{
|
||||
if (!isset($this->tokens[$series])) {
|
||||
throw new TokenNotFoundException('No token found.');
|
||||
}
|
||||
|
||||
$token = new PersistentToken(
|
||||
$this->tokens[$series]->getClass(),
|
||||
$this->tokens[$series]->getUsername(),
|
||||
$series,
|
||||
$tokenValue,
|
||||
$lastUsed
|
||||
);
|
||||
$this->tokens[$series] = $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteTokenBySeries($series)
|
||||
{
|
||||
unset($this->tokens[$series]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function createNewToken(PersistentTokenInterface $token)
|
||||
{
|
||||
$this->tokens[$token->getSeries()] = $token;
|
||||
}
|
||||
}
|
||||
99
core/vendor/symfony/security/Core/Authentication/RememberMe/PersistentToken.php
vendored
Normal file
99
core/vendor/symfony/security/Core/Authentication/RememberMe/PersistentToken.php
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
<?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\RememberMe;
|
||||
|
||||
/**
|
||||
* This class is only used by PersistentTokenRememberMeServices internally.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
final class PersistentToken implements PersistentTokenInterface
|
||||
{
|
||||
private $class;
|
||||
private $username;
|
||||
private $series;
|
||||
private $tokenValue;
|
||||
private $lastUsed;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $class
|
||||
* @param string $username
|
||||
* @param string $series
|
||||
* @param string $tokenValue
|
||||
* @param \DateTime $lastUsed
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct($class, $username, $series, $tokenValue, \DateTime $lastUsed)
|
||||
{
|
||||
if (empty($class)) {
|
||||
throw new \InvalidArgumentException('$class must not be empty.');
|
||||
}
|
||||
if ('' === $username || null === $username) {
|
||||
throw new \InvalidArgumentException('$username must not be empty.');
|
||||
}
|
||||
if (empty($series)) {
|
||||
throw new \InvalidArgumentException('$series must not be empty.');
|
||||
}
|
||||
if (empty($tokenValue)) {
|
||||
throw new \InvalidArgumentException('$tokenValue must not be empty.');
|
||||
}
|
||||
|
||||
$this->class = $class;
|
||||
$this->username = $username;
|
||||
$this->series = $series;
|
||||
$this->tokenValue = $tokenValue;
|
||||
$this->lastUsed = $lastUsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getClass()
|
||||
{
|
||||
return $this->class;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
return $this->username;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSeries()
|
||||
{
|
||||
return $this->series;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTokenValue()
|
||||
{
|
||||
return $this->tokenValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getLastUsed()
|
||||
{
|
||||
return $this->lastUsed;
|
||||
}
|
||||
}
|
||||
56
core/vendor/symfony/security/Core/Authentication/RememberMe/PersistentTokenInterface.php
vendored
Normal file
56
core/vendor/symfony/security/Core/Authentication/RememberMe/PersistentTokenInterface.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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\RememberMe;
|
||||
|
||||
/**
|
||||
* Interface to be implemented by persistent token classes (such as
|
||||
* Doctrine entities representing a remember-me token).
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface PersistentTokenInterface
|
||||
{
|
||||
/**
|
||||
* Returns the class of the user.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getClass();
|
||||
|
||||
/**
|
||||
* Returns the username.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUsername();
|
||||
|
||||
/**
|
||||
* Returns the series.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getSeries();
|
||||
|
||||
/**
|
||||
* Returns the token value.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getTokenValue();
|
||||
|
||||
/**
|
||||
* Returns the time the token was last used.
|
||||
*
|
||||
* @return \DateTime
|
||||
*/
|
||||
public function getLastUsed();
|
||||
}
|
||||
58
core/vendor/symfony/security/Core/Authentication/RememberMe/TokenProviderInterface.php
vendored
Normal file
58
core/vendor/symfony/security/Core/Authentication/RememberMe/TokenProviderInterface.php
vendored
Normal file
@@ -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\Core\Authentication\RememberMe;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\TokenNotFoundException;
|
||||
|
||||
/**
|
||||
* Interface for TokenProviders.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface TokenProviderInterface
|
||||
{
|
||||
/**
|
||||
* Loads the active token for the given series.
|
||||
*
|
||||
* @param string $series
|
||||
*
|
||||
* @return PersistentTokenInterface
|
||||
*
|
||||
* @throws TokenNotFoundException if the token is not found
|
||||
*/
|
||||
public function loadTokenBySeries($series);
|
||||
|
||||
/**
|
||||
* Deletes all tokens belonging to series.
|
||||
*
|
||||
* @param string $series
|
||||
*/
|
||||
public function deleteTokenBySeries($series);
|
||||
|
||||
/**
|
||||
* Updates the token according to this data.
|
||||
*
|
||||
* @param string $series
|
||||
* @param string $tokenValue
|
||||
* @param \DateTime $lastUsed
|
||||
*
|
||||
* @throws TokenNotFoundException if the token is not found
|
||||
*/
|
||||
public function updateToken($series, $tokenValue, \DateTime $lastUsed);
|
||||
|
||||
/**
|
||||
* Creates a new token.
|
||||
*
|
||||
* @param PersistentTokenInterface $token
|
||||
*/
|
||||
public function createNewToken(PersistentTokenInterface $token);
|
||||
}
|
||||
25
core/vendor/symfony/security/Core/Authentication/SimpleAuthenticatorInterface.php
vendored
Normal file
25
core/vendor/symfony/security/Core/Authentication/SimpleAuthenticatorInterface.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
||||
|
||||
/**
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
*/
|
||||
interface SimpleAuthenticatorInterface
|
||||
{
|
||||
public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey);
|
||||
|
||||
public function supportsToken(TokenInterface $token, $providerKey);
|
||||
}
|
||||
24
core/vendor/symfony/security/Core/Authentication/SimpleFormAuthenticatorInterface.php
vendored
Normal file
24
core/vendor/symfony/security/Core/Authentication/SimpleFormAuthenticatorInterface.php
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
<?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);
|
||||
}
|
||||
24
core/vendor/symfony/security/Core/Authentication/SimplePreAuthenticatorInterface.php
vendored
Normal file
24
core/vendor/symfony/security/Core/Authentication/SimplePreAuthenticatorInterface.php
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
<?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);
|
||||
}
|
||||
288
core/vendor/symfony/security/Core/Authentication/Token/AbstractToken.php
vendored
Normal file
288
core/vendor/symfony/security/Core/Authentication/Token/AbstractToken.php
vendored
Normal file
@@ -0,0 +1,288 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||
use Symfony\Component\Security\Core\Role\Role;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
|
||||
use Symfony\Component\Security\Core\User\EquatableInterface;
|
||||
|
||||
/**
|
||||
* Base class for Token instances.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
abstract class AbstractToken implements TokenInterface
|
||||
{
|
||||
private $user;
|
||||
private $roles = array();
|
||||
private $authenticated = false;
|
||||
private $attributes = array();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param RoleInterface[]|string[] $roles An array of roles
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(array $roles = array())
|
||||
{
|
||||
foreach ($roles as $role) {
|
||||
if (is_string($role)) {
|
||||
$role = new Role($role);
|
||||
} elseif (!$role instanceof RoleInterface) {
|
||||
throw new \InvalidArgumentException(sprintf('$roles must be an array of strings, or RoleInterface instances, but got %s.', gettype($role)));
|
||||
}
|
||||
|
||||
$this->roles[] = $role;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getRoles()
|
||||
{
|
||||
return $this->roles;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
if ($this->user instanceof UserInterface) {
|
||||
return $this->user->getUsername();
|
||||
}
|
||||
|
||||
return (string) $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the user in the token.
|
||||
*
|
||||
* The user can be a UserInterface instance, or an object implementing
|
||||
* a __toString method or the username as a regular string.
|
||||
*
|
||||
* @param string|object $user The user
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setUser($user)
|
||||
{
|
||||
if (!($user instanceof UserInterface || (is_object($user) && method_exists($user, '__toString')) || is_string($user))) {
|
||||
throw new \InvalidArgumentException('$user must be an instanceof UserInterface, an object implementing a __toString method, or a primitive string.');
|
||||
}
|
||||
|
||||
if (null === $this->user) {
|
||||
$changed = false;
|
||||
} elseif ($this->user instanceof UserInterface) {
|
||||
if (!$user instanceof UserInterface) {
|
||||
$changed = true;
|
||||
} else {
|
||||
$changed = $this->hasUserChanged($user);
|
||||
}
|
||||
} elseif ($user instanceof UserInterface) {
|
||||
$changed = true;
|
||||
} else {
|
||||
$changed = (string) $this->user !== (string) $user;
|
||||
}
|
||||
|
||||
if ($changed) {
|
||||
$this->setAuthenticated(false);
|
||||
}
|
||||
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isAuthenticated()
|
||||
{
|
||||
return $this->authenticated;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setAuthenticated($authenticated)
|
||||
{
|
||||
$this->authenticated = (bool) $authenticated;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function eraseCredentials()
|
||||
{
|
||||
if ($this->getUser() instanceof UserInterface) {
|
||||
$this->getUser()->eraseCredentials();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(
|
||||
array(
|
||||
is_object($this->user) ? clone $this->user : $this->user,
|
||||
$this->authenticated,
|
||||
$this->roles,
|
||||
$this->attributes,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list($this->user, $this->authenticated, $this->roles, $this->attributes) = unserialize($serialized);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the token attributes.
|
||||
*
|
||||
* @return array The token attributes
|
||||
*/
|
||||
public function getAttributes()
|
||||
{
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the token attributes.
|
||||
*
|
||||
* @param array $attributes The token attributes
|
||||
*/
|
||||
public function setAttributes(array $attributes)
|
||||
{
|
||||
$this->attributes = $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the attribute exists.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
*
|
||||
* @return bool true if the attribute exists, false otherwise
|
||||
*/
|
||||
public function hasAttribute($name)
|
||||
{
|
||||
return array_key_exists($name, $this->attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an attribute value.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
*
|
||||
* @return mixed The attribute value
|
||||
*
|
||||
* @throws \InvalidArgumentException When attribute doesn't exist for this token
|
||||
*/
|
||||
public function getAttribute($name)
|
||||
{
|
||||
if (!array_key_exists($name, $this->attributes)) {
|
||||
throw new \InvalidArgumentException(sprintf('This token has no "%s" attribute.', $name));
|
||||
}
|
||||
|
||||
return $this->attributes[$name];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an attribute.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
* @param mixed $value The attribute value
|
||||
*/
|
||||
public function setAttribute($name, $value)
|
||||
{
|
||||
$this->attributes[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$class = get_class($this);
|
||||
$class = substr($class, strrpos($class, '\\') + 1);
|
||||
|
||||
$roles = array();
|
||||
foreach ($this->roles as $role) {
|
||||
$roles[] = $role->getRole();
|
||||
}
|
||||
|
||||
return sprintf('%s(user="%s", authenticated=%s, roles="%s")', $class, $this->getUsername(), json_encode($this->authenticated), implode(', ', $roles));
|
||||
}
|
||||
|
||||
private function hasUserChanged(UserInterface $user)
|
||||
{
|
||||
if (!($this->user instanceof UserInterface)) {
|
||||
throw new \BadMethodCallException('Method "hasUserChanged" should be called when current user class is instance of "UserInterface".');
|
||||
}
|
||||
|
||||
if ($this->user instanceof EquatableInterface) {
|
||||
return !(bool) $this->user->isEqualTo($user);
|
||||
}
|
||||
|
||||
if ($this->user->getPassword() !== $user->getPassword()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user->getSalt() !== $user->getSalt()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user->getUsername() !== $user->getUsername()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user instanceof AdvancedUserInterface && $user instanceof AdvancedUserInterface) {
|
||||
if ($this->user->isAccountNonExpired() !== $user->isAccountNonExpired()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user->isAccountNonLocked() !== $user->isAccountNonLocked()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user->isCredentialsNonExpired() !== $user->isCredentialsNonExpired()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($this->user->isEnabled() !== $user->isEnabled()) {
|
||||
return true;
|
||||
}
|
||||
} elseif ($this->user instanceof AdvancedUserInterface xor $user instanceof AdvancedUserInterface) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
85
core/vendor/symfony/security/Core/Authentication/Token/AnonymousToken.php
vendored
Normal file
85
core/vendor/symfony/security/Core/Authentication/Token/AnonymousToken.php
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||
|
||||
/**
|
||||
* AnonymousToken represents an anonymous token.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class AnonymousToken extends AbstractToken
|
||||
{
|
||||
private $secret;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $secret A secret used to make sure the token is created by the app and not by a malicious client
|
||||
* @param string $user The user
|
||||
* @param RoleInterface[] $roles An array of roles
|
||||
*/
|
||||
public function __construct($secret, $user, array $roles = array())
|
||||
{
|
||||
parent::__construct($roles);
|
||||
|
||||
$this->secret = $secret;
|
||||
$this->setUser($user);
|
||||
$this->setAuthenticated(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCredentials()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
public function getSecret()
|
||||
{
|
||||
return $this->secret;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array($this->secret, parent::serialize()));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list($this->secret, $parentStr) = unserialize($serialized);
|
||||
parent::unserialize($parentStr);
|
||||
}
|
||||
}
|
||||
95
core/vendor/symfony/security/Core/Authentication/Token/PreAuthenticatedToken.php
vendored
Normal file
95
core/vendor/symfony/security/Core/Authentication/Token/PreAuthenticatedToken.php
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||
|
||||
/**
|
||||
* PreAuthenticatedToken implements a pre-authenticated token.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class PreAuthenticatedToken extends AbstractToken
|
||||
{
|
||||
private $credentials;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string|object $user The user
|
||||
* @param mixed $credentials The user credentials
|
||||
* @param string $providerKey The provider key
|
||||
* @param RoleInterface[]|string[] $roles An array of roles
|
||||
*/
|
||||
public function __construct($user, $credentials, $providerKey, array $roles = array())
|
||||
{
|
||||
parent::__construct($roles);
|
||||
|
||||
if (empty($providerKey)) {
|
||||
throw new \InvalidArgumentException('$providerKey must not be empty.');
|
||||
}
|
||||
|
||||
$this->setUser($user);
|
||||
$this->credentials = $credentials;
|
||||
$this->providerKey = $providerKey;
|
||||
|
||||
if ($roles) {
|
||||
$this->setAuthenticated(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the provider key.
|
||||
*
|
||||
* @return string The provider key
|
||||
*/
|
||||
public function getProviderKey()
|
||||
{
|
||||
return $this->providerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCredentials()
|
||||
{
|
||||
return $this->credentials;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function eraseCredentials()
|
||||
{
|
||||
parent::eraseCredentials();
|
||||
|
||||
$this->credentials = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($str)
|
||||
{
|
||||
list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);
|
||||
parent::unserialize($parentStr);
|
||||
}
|
||||
}
|
||||
124
core/vendor/symfony/security/Core/Authentication/Token/RememberMeToken.php
vendored
Normal file
124
core/vendor/symfony/security/Core/Authentication/Token/RememberMeToken.php
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* Authentication Token for "Remember-Me".
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class RememberMeToken extends AbstractToken
|
||||
{
|
||||
private $secret;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param UserInterface $user
|
||||
* @param string $providerKey
|
||||
* @param string $secret A secret used to make sure the token is created by the app and not by a malicious client
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(UserInterface $user, $providerKey, $secret)
|
||||
{
|
||||
parent::__construct($user->getRoles());
|
||||
|
||||
if (empty($secret)) {
|
||||
throw new \InvalidArgumentException('$secret must not be empty.');
|
||||
}
|
||||
|
||||
if (empty($providerKey)) {
|
||||
throw new \InvalidArgumentException('$providerKey must not be empty.');
|
||||
}
|
||||
|
||||
$this->providerKey = $providerKey;
|
||||
$this->secret = $secret;
|
||||
|
||||
$this->setUser($user);
|
||||
parent::setAuthenticated(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setAuthenticated($authenticated)
|
||||
{
|
||||
if ($authenticated) {
|
||||
throw new \LogicException('You cannot set this token to authenticated after creation.');
|
||||
}
|
||||
|
||||
parent::setAuthenticated(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the provider secret.
|
||||
*
|
||||
* @return string The provider secret
|
||||
*/
|
||||
public function getProviderKey()
|
||||
{
|
||||
return $this->providerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
public function getSecret()
|
||||
{
|
||||
return $this->secret;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCredentials()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
$this->secret,
|
||||
$this->providerKey,
|
||||
parent::serialize(),
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list($this->secret, $this->providerKey, $parentStr) = unserialize($serialized);
|
||||
parent::unserialize($parentStr);
|
||||
}
|
||||
}
|
||||
43
core/vendor/symfony/security/Core/Authentication/Token/Storage/TokenStorage.php
vendored
Normal file
43
core/vendor/symfony/security/Core/Authentication/Token/Storage/TokenStorage.php
vendored
Normal file
@@ -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\Authentication\Token\Storage;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* TokenStorage contains a TokenInterface.
|
||||
*
|
||||
* It gives access to the token representing the current user authentication.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class TokenStorage implements TokenStorageInterface
|
||||
{
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getToken()
|
||||
{
|
||||
return $this->token;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setToken(TokenInterface $token = null)
|
||||
{
|
||||
$this->token = $token;
|
||||
}
|
||||
}
|
||||
36
core/vendor/symfony/security/Core/Authentication/Token/Storage/TokenStorageInterface.php
vendored
Normal file
36
core/vendor/symfony/security/Core/Authentication/Token/Storage/TokenStorageInterface.php
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
<?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\Token\Storage;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* The TokenStorageInterface.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface TokenStorageInterface
|
||||
{
|
||||
/**
|
||||
* Returns the current security token.
|
||||
*
|
||||
* @return TokenInterface|null A TokenInterface instance or null if no authentication information is available
|
||||
*/
|
||||
public function getToken();
|
||||
|
||||
/**
|
||||
* Sets the authentication token.
|
||||
*
|
||||
* @param TokenInterface $token A TokenInterface token, or null if no further authentication information should be stored
|
||||
*/
|
||||
public function setToken(TokenInterface $token = null);
|
||||
}
|
||||
131
core/vendor/symfony/security/Core/Authentication/Token/TokenInterface.php
vendored
Normal file
131
core/vendor/symfony/security/Core/Authentication/Token/TokenInterface.php
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||
|
||||
/**
|
||||
* TokenInterface is the interface for the user authentication information.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface TokenInterface extends \Serializable
|
||||
{
|
||||
/**
|
||||
* Returns a string representation of the Token.
|
||||
*
|
||||
* This is only to be used for debugging purposes.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString();
|
||||
|
||||
/**
|
||||
* Returns the user roles.
|
||||
*
|
||||
* @return RoleInterface[] An array of RoleInterface instances.
|
||||
*/
|
||||
public function getRoles();
|
||||
|
||||
/**
|
||||
* Returns the user credentials.
|
||||
*
|
||||
* @return mixed The user credentials
|
||||
*/
|
||||
public function getCredentials();
|
||||
|
||||
/**
|
||||
* Returns a user representation.
|
||||
*
|
||||
* @return mixed Can be a UserInterface instance, an object implementing a __toString method,
|
||||
* or the username as a regular string
|
||||
*
|
||||
* @see AbstractToken::setUser()
|
||||
*/
|
||||
public function getUser();
|
||||
|
||||
/**
|
||||
* Sets a user.
|
||||
*
|
||||
* @param mixed $user
|
||||
*/
|
||||
public function setUser($user);
|
||||
|
||||
/**
|
||||
* Returns the username.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUsername();
|
||||
|
||||
/**
|
||||
* Returns whether the user is authenticated or not.
|
||||
*
|
||||
* @return bool true if the token has been authenticated, false otherwise
|
||||
*/
|
||||
public function isAuthenticated();
|
||||
|
||||
/**
|
||||
* Sets the authenticated flag.
|
||||
*
|
||||
* @param bool $isAuthenticated The authenticated flag
|
||||
*/
|
||||
public function setAuthenticated($isAuthenticated);
|
||||
|
||||
/**
|
||||
* Removes sensitive information from the token.
|
||||
*/
|
||||
public function eraseCredentials();
|
||||
|
||||
/**
|
||||
* Returns the token attributes.
|
||||
*
|
||||
* @return array The token attributes
|
||||
*/
|
||||
public function getAttributes();
|
||||
|
||||
/**
|
||||
* Sets the token attributes.
|
||||
*
|
||||
* @param array $attributes The token attributes
|
||||
*/
|
||||
public function setAttributes(array $attributes);
|
||||
|
||||
/**
|
||||
* Returns true if the attribute exists.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
*
|
||||
* @return bool true if the attribute exists, false otherwise
|
||||
*/
|
||||
public function hasAttribute($name);
|
||||
|
||||
/**
|
||||
* Returns an attribute value.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
*
|
||||
* @return mixed The attribute value
|
||||
*
|
||||
* @throws \InvalidArgumentException When attribute doesn't exist for this token
|
||||
*/
|
||||
public function getAttribute($name);
|
||||
|
||||
/**
|
||||
* Sets an attribute.
|
||||
*
|
||||
* @param string $name The attribute name
|
||||
* @param mixed $value The attribute value
|
||||
*/
|
||||
public function setAttribute($name, $value);
|
||||
}
|
||||
107
core/vendor/symfony/security/Core/Authentication/Token/UsernamePasswordToken.php
vendored
Normal file
107
core/vendor/symfony/security/Core/Authentication/Token/UsernamePasswordToken.php
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
<?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\Token;
|
||||
|
||||
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||
|
||||
/**
|
||||
* UsernamePasswordToken implements a username and password token.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class UsernamePasswordToken extends AbstractToken
|
||||
{
|
||||
private $credentials;
|
||||
private $providerKey;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string|object $user The username (like a nickname, email address, etc.), or a UserInterface instance or an object implementing a __toString method.
|
||||
* @param string $credentials This usually is the password of the user
|
||||
* @param string $providerKey The provider key
|
||||
* @param RoleInterface[]|string[] $roles An array of roles
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct($user, $credentials, $providerKey, array $roles = array())
|
||||
{
|
||||
parent::__construct($roles);
|
||||
|
||||
if (empty($providerKey)) {
|
||||
throw new \InvalidArgumentException('$providerKey must not be empty.');
|
||||
}
|
||||
|
||||
$this->setUser($user);
|
||||
$this->credentials = $credentials;
|
||||
$this->providerKey = $providerKey;
|
||||
|
||||
parent::setAuthenticated(count($roles) > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setAuthenticated($isAuthenticated)
|
||||
{
|
||||
if ($isAuthenticated) {
|
||||
throw new \LogicException('Cannot set this token to trusted after instantiation.');
|
||||
}
|
||||
|
||||
parent::setAuthenticated(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCredentials()
|
||||
{
|
||||
return $this->credentials;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the provider key.
|
||||
*
|
||||
* @return string The provider key
|
||||
*/
|
||||
public function getProviderKey()
|
||||
{
|
||||
return $this->providerKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function eraseCredentials()
|
||||
{
|
||||
parent::eraseCredentials();
|
||||
|
||||
$this->credentials = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list($this->credentials, $this->providerKey, $parentStr) = unserialize($serialized);
|
||||
parent::unserialize($parentStr);
|
||||
}
|
||||
}
|
||||
38
core/vendor/symfony/security/Core/AuthenticationEvents.php
vendored
Normal file
38
core/vendor/symfony/security/Core/AuthenticationEvents.php
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<?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;
|
||||
|
||||
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.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const AUTHENTICATION_SUCCESS = 'security.authentication.success';
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const AUTHENTICATION_FAILURE = 'security.authentication.failure';
|
||||
}
|
||||
223
core/vendor/symfony/security/Core/Authorization/AccessDecisionManager.php
vendored
Normal file
223
core/vendor/symfony/security/Core/Authorization/AccessDecisionManager.php
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
<?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 Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AccessDecisionManager is the base class for all access decision managers
|
||||
* that use decision voters.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class AccessDecisionManager implements AccessDecisionManagerInterface
|
||||
{
|
||||
const STRATEGY_AFFIRMATIVE = 'affirmative';
|
||||
const STRATEGY_CONSENSUS = 'consensus';
|
||||
const STRATEGY_UNANIMOUS = 'unanimous';
|
||||
|
||||
private $voters;
|
||||
private $strategy;
|
||||
private $allowIfAllAbstainDecisions;
|
||||
private $allowIfEqualGrantedDeniedDecisions;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param VoterInterface[] $voters An array of VoterInterface instances
|
||||
* @param string $strategy The vote strategy
|
||||
* @param bool $allowIfAllAbstainDecisions Whether to grant access if all voters abstained or not
|
||||
* @param bool $allowIfEqualGrantedDeniedDecisions Whether to grant access if result are equals
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function __construct(array $voters = array(), $strategy = self::STRATEGY_AFFIRMATIVE, $allowIfAllAbstainDecisions = false, $allowIfEqualGrantedDeniedDecisions = true)
|
||||
{
|
||||
$strategyMethod = 'decide'.ucfirst($strategy);
|
||||
if (!is_callable(array($this, $strategyMethod))) {
|
||||
throw new \InvalidArgumentException(sprintf('The strategy "%s" is not supported.', $strategy));
|
||||
}
|
||||
|
||||
$this->voters = $voters;
|
||||
$this->strategy = $strategyMethod;
|
||||
$this->allowIfAllAbstainDecisions = (bool) $allowIfAllAbstainDecisions;
|
||||
$this->allowIfEqualGrantedDeniedDecisions = (bool) $allowIfEqualGrantedDeniedDecisions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the voters.
|
||||
*
|
||||
* @param VoterInterface[] $voters An array of VoterInterface instances
|
||||
*/
|
||||
public function setVoters(array $voters)
|
||||
{
|
||||
$this->voters = $voters;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function decide(TokenInterface $token, array $attributes, $object = null)
|
||||
{
|
||||
return $this->{$this->strategy}($token, $attributes, $object);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@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
|
||||
* allowIfAllAbstainDecisions property value (defaults to false).
|
||||
*/
|
||||
private function decideAffirmative(TokenInterface $token, array $attributes, $object = null)
|
||||
{
|
||||
$deny = 0;
|
||||
foreach ($this->voters as $voter) {
|
||||
$result = $voter->vote($token, $object, $attributes);
|
||||
switch ($result) {
|
||||
case VoterInterface::ACCESS_GRANTED:
|
||||
return true;
|
||||
|
||||
case VoterInterface::ACCESS_DENIED:
|
||||
++$deny;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($deny > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->allowIfAllAbstainDecisions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Grants access if there is consensus of granted against denied responses.
|
||||
*
|
||||
* Consensus means majority-rule (ignoring abstains) rather than unanimous
|
||||
* agreement (ignoring abstains). If you require unanimity, see
|
||||
* UnanimousBased.
|
||||
*
|
||||
* If there were an equal number of grant and deny votes, the decision will
|
||||
* be based on the allowIfEqualGrantedDeniedDecisions property value
|
||||
* (defaults to true).
|
||||
*
|
||||
* If all voters abstained from voting, the decision will be based on the
|
||||
* allowIfAllAbstainDecisions property value (defaults to false).
|
||||
*/
|
||||
private function decideConsensus(TokenInterface $token, array $attributes, $object = null)
|
||||
{
|
||||
$grant = 0;
|
||||
$deny = 0;
|
||||
foreach ($this->voters as $voter) {
|
||||
$result = $voter->vote($token, $object, $attributes);
|
||||
|
||||
switch ($result) {
|
||||
case VoterInterface::ACCESS_GRANTED:
|
||||
++$grant;
|
||||
|
||||
break;
|
||||
|
||||
case VoterInterface::ACCESS_DENIED:
|
||||
++$deny;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($grant > $deny) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($deny > $grant) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($grant > 0) {
|
||||
return $this->allowIfEqualGrantedDeniedDecisions;
|
||||
}
|
||||
|
||||
return $this->allowIfAllAbstainDecisions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Grants access if only grant (or abstain) votes were received.
|
||||
*
|
||||
* If all voters abstained from voting, the decision will be based on the
|
||||
* allowIfAllAbstainDecisions property value (defaults to false).
|
||||
*/
|
||||
private function decideUnanimous(TokenInterface $token, array $attributes, $object = null)
|
||||
{
|
||||
$grant = 0;
|
||||
foreach ($attributes as $attribute) {
|
||||
foreach ($this->voters as $voter) {
|
||||
$result = $voter->vote($token, $object, array($attribute));
|
||||
|
||||
switch ($result) {
|
||||
case VoterInterface::ACCESS_GRANTED:
|
||||
++$grant;
|
||||
|
||||
break;
|
||||
|
||||
case VoterInterface::ACCESS_DENIED:
|
||||
return false;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// no deny votes
|
||||
if ($grant > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->allowIfAllAbstainDecisions;
|
||||
}
|
||||
}
|
||||
55
core/vendor/symfony/security/Core/Authorization/AccessDecisionManagerInterface.php
vendored
Normal file
55
core/vendor/symfony/security/Core/Authorization/AccessDecisionManagerInterface.php
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
<?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 Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AccessDecisionManagerInterface makes authorization decisions.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
interface AccessDecisionManagerInterface
|
||||
{
|
||||
/**
|
||||
* Decides whether the access is possible or not.
|
||||
*
|
||||
* @param TokenInterface $token A TokenInterface instance
|
||||
* @param array $attributes An array of attributes associated with the method being invoked
|
||||
* @param object $object The object to secure
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
70
core/vendor/symfony/security/Core/Authorization/AuthorizationChecker.php
vendored
Normal file
70
core/vendor/symfony/security/Core/Authorization/AuthorizationChecker.php
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
<?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 Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
|
||||
|
||||
/**
|
||||
* AuthorizationChecker is the main authorization 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>
|
||||
*/
|
||||
class AuthorizationChecker implements AuthorizationCheckerInterface
|
||||
{
|
||||
private $tokenStorage;
|
||||
private $accessDecisionManager;
|
||||
private $authenticationManager;
|
||||
private $alwaysAuthenticate;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param TokenStorageInterface $tokenStorage
|
||||
* @param AuthenticationManagerInterface $authenticationManager An AuthenticationManager instance
|
||||
* @param AccessDecisionManagerInterface $accessDecisionManager An AccessDecisionManager instance
|
||||
* @param bool $alwaysAuthenticate
|
||||
*/
|
||||
public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, AccessDecisionManagerInterface $accessDecisionManager, $alwaysAuthenticate = false)
|
||||
{
|
||||
$this->tokenStorage = $tokenStorage;
|
||||
$this->authenticationManager = $authenticationManager;
|
||||
$this->accessDecisionManager = $accessDecisionManager;
|
||||
$this->alwaysAuthenticate = $alwaysAuthenticate;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @throws AuthenticationCredentialsNotFoundException when the token storage has no authentication token.
|
||||
*/
|
||||
final public function isGranted($attributes, $object = null)
|
||||
{
|
||||
if (null === ($token = $this->tokenStorage->getToken())) {
|
||||
throw new AuthenticationCredentialsNotFoundException('The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL.');
|
||||
}
|
||||
|
||||
if ($this->alwaysAuthenticate || !$token->isAuthenticated()) {
|
||||
$this->tokenStorage->setToken($token = $this->authenticationManager->authenticate($token));
|
||||
}
|
||||
|
||||
if (!is_array($attributes)) {
|
||||
$attributes = array($attributes);
|
||||
}
|
||||
|
||||
return $this->accessDecisionManager->decide($token, $attributes, $object);
|
||||
}
|
||||
}
|
||||
30
core/vendor/symfony/security/Core/Authorization/AuthorizationCheckerInterface.php
vendored
Normal file
30
core/vendor/symfony/security/Core/Authorization/AuthorizationCheckerInterface.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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;
|
||||
|
||||
/**
|
||||
* The AuthorizationCheckerInterface.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface AuthorizationCheckerInterface
|
||||
{
|
||||
/**
|
||||
* Checks if the attributes are granted against the current authentication token and optionally supplied object.
|
||||
*
|
||||
* @param mixed $attributes
|
||||
* @param mixed $object
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isGranted($attributes, $object = null);
|
||||
}
|
||||
33
core/vendor/symfony/security/Core/Authorization/ExpressionLanguage.php
vendored
Normal file
33
core/vendor/symfony/security/Core/Authorization/ExpressionLanguage.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?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 Symfony\Component\ExpressionLanguage\ExpressionLanguage as BaseExpressionLanguage;
|
||||
use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface;
|
||||
|
||||
/**
|
||||
* Adds some function to the default ExpressionLanguage.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* @see ExpressionLanguageProvider
|
||||
*/
|
||||
class ExpressionLanguage extends BaseExpressionLanguage
|
||||
{
|
||||
public function __construct(ParserCacheInterface $cache = null, array $providers = array())
|
||||
{
|
||||
// prepend the default provider to let users override it easily
|
||||
array_unshift($providers, new ExpressionLanguageProvider());
|
||||
|
||||
parent::__construct($cache, $providers);
|
||||
}
|
||||
}
|
||||
58
core/vendor/symfony/security/Core/Authorization/ExpressionLanguageProvider.php
vendored
Normal file
58
core/vendor/symfony/security/Core/Authorization/ExpressionLanguageProvider.php
vendored
Normal file
@@ -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\Core\Authorization;
|
||||
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionFunction;
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
|
||||
|
||||
/**
|
||||
* Define some ExpressionLanguage functions.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class ExpressionLanguageProvider implements ExpressionFunctionProviderInterface
|
||||
{
|
||||
public function getFunctions()
|
||||
{
|
||||
return array(
|
||||
new ExpressionFunction('is_anonymous', function () {
|
||||
return '$trust_resolver->isAnonymous($token)';
|
||||
}, function (array $variables) {
|
||||
return $variables['trust_resolver']->isAnonymous($variables['token']);
|
||||
}),
|
||||
|
||||
new ExpressionFunction('is_authenticated', function () {
|
||||
return '$token && !$trust_resolver->isAnonymous($token)';
|
||||
}, function (array $variables) {
|
||||
return $variables['token'] && !$variables['trust_resolver']->isAnonymous($variables['token']);
|
||||
}),
|
||||
|
||||
new ExpressionFunction('is_fully_authenticated', function () {
|
||||
return '$trust_resolver->isFullFledged($token)';
|
||||
}, function (array $variables) {
|
||||
return $variables['trust_resolver']->isFullFledged($variables['token']);
|
||||
}),
|
||||
|
||||
new ExpressionFunction('is_remember_me', function () {
|
||||
return '$trust_resolver->isRememberMe($token)';
|
||||
}, function (array $variables) {
|
||||
return $variables['trust_resolver']->isRememberMe($variables['token']);
|
||||
}),
|
||||
|
||||
new ExpressionFunction('has_role', function ($role) {
|
||||
return sprintf('in_array(%s, $roles)', $role);
|
||||
}, function (array $variables, $role) {
|
||||
return in_array($role, $variables['roles']);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
117
core/vendor/symfony/security/Core/Authorization/Voter/AbstractVoter.php
vendored
Normal file
117
core/vendor/symfony/security/Core/Authorization/Voter/AbstractVoter.php
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
<?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);
|
||||
}
|
||||
94
core/vendor/symfony/security/Core/Authorization/Voter/AuthenticatedVoter.php
vendored
Normal file
94
core/vendor/symfony/security/Core/Authorization/Voter/AuthenticatedVoter.php
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AuthenticatedVoter votes if an attribute like IS_AUTHENTICATED_FULLY,
|
||||
* IS_AUTHENTICATED_REMEMBERED, or IS_AUTHENTICATED_ANONYMOUSLY is present.
|
||||
*
|
||||
* This list is most restrictive to least restrictive checking.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class AuthenticatedVoter implements VoterInterface
|
||||
{
|
||||
const IS_AUTHENTICATED_FULLY = 'IS_AUTHENTICATED_FULLY';
|
||||
const IS_AUTHENTICATED_REMEMBERED = 'IS_AUTHENTICATED_REMEMBERED';
|
||||
const IS_AUTHENTICATED_ANONYMOUSLY = 'IS_AUTHENTICATED_ANONYMOUSLY';
|
||||
|
||||
private $authenticationTrustResolver;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AuthenticationTrustResolverInterface $authenticationTrustResolver
|
||||
*/
|
||||
public function __construct(AuthenticationTrustResolverInterface $authenticationTrustResolver)
|
||||
{
|
||||
$this->authenticationTrustResolver = $authenticationTrustResolver;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@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)
|
||||
{
|
||||
$result = VoterInterface::ACCESS_ABSTAIN;
|
||||
foreach ($attributes as $attribute) {
|
||||
if (!$this->supportsAttribute($attribute)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$result = VoterInterface::ACCESS_DENIED;
|
||||
|
||||
if (self::IS_AUTHENTICATED_FULLY === $attribute
|
||||
&& $this->authenticationTrustResolver->isFullFledged($token)) {
|
||||
return VoterInterface::ACCESS_GRANTED;
|
||||
}
|
||||
|
||||
if (self::IS_AUTHENTICATED_REMEMBERED === $attribute
|
||||
&& ($this->authenticationTrustResolver->isRememberMe($token)
|
||||
|| $this->authenticationTrustResolver->isFullFledged($token))) {
|
||||
return VoterInterface::ACCESS_GRANTED;
|
||||
}
|
||||
|
||||
if (self::IS_AUTHENTICATED_ANONYMOUSLY === $attribute
|
||||
&& ($this->authenticationTrustResolver->isAnonymous($token)
|
||||
|| $this->authenticationTrustResolver->isRememberMe($token)
|
||||
|| $this->authenticationTrustResolver->isFullFledged($token))) {
|
||||
return VoterInterface::ACCESS_GRANTED;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
119
core/vendor/symfony/security/Core/Authorization/Voter/ExpressionVoter.php
vendored
Normal file
119
core/vendor/symfony/security/Core/Authorization/Voter/ExpressionVoter.php
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface;
|
||||
use Symfony\Component\Security\Core\Authorization\ExpressionLanguage;
|
||||
use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
|
||||
use Symfony\Component\ExpressionLanguage\Expression;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* ExpressionVoter votes based on the evaluation of an expression.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class ExpressionVoter implements VoterInterface
|
||||
{
|
||||
private $expressionLanguage;
|
||||
private $trustResolver;
|
||||
private $roleHierarchy;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param ExpressionLanguage $expressionLanguage
|
||||
* @param AuthenticationTrustResolverInterface $trustResolver
|
||||
* @param RoleHierarchyInterface|null $roleHierarchy
|
||||
*/
|
||||
public function __construct(ExpressionLanguage $expressionLanguage, AuthenticationTrustResolverInterface $trustResolver, RoleHierarchyInterface $roleHierarchy = null)
|
||||
{
|
||||
$this->expressionLanguage = $expressionLanguage;
|
||||
$this->trustResolver = $trustResolver;
|
||||
$this->roleHierarchy = $roleHierarchy;
|
||||
}
|
||||
|
||||
public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
|
||||
{
|
||||
$this->expressionLanguage->registerProvider($provider);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@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)
|
||||
{
|
||||
$result = VoterInterface::ACCESS_ABSTAIN;
|
||||
$variables = null;
|
||||
foreach ($attributes as $attribute) {
|
||||
if (!$this->supportsAttribute($attribute)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (null === $variables) {
|
||||
$variables = $this->getVariables($token, $object);
|
||||
}
|
||||
|
||||
$result = VoterInterface::ACCESS_DENIED;
|
||||
if ($this->expressionLanguage->evaluate($attribute, $variables)) {
|
||||
return VoterInterface::ACCESS_GRANTED;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function getVariables(TokenInterface $token, $object)
|
||||
{
|
||||
if (null !== $this->roleHierarchy) {
|
||||
$roles = $this->roleHierarchy->getReachableRoles($token->getRoles());
|
||||
} else {
|
||||
$roles = $token->getRoles();
|
||||
}
|
||||
|
||||
$variables = array(
|
||||
'token' => $token,
|
||||
'user' => $token->getUser(),
|
||||
'object' => $object,
|
||||
'subject' => $object,
|
||||
'roles' => array_map(function ($role) { return $role->getRole(); }, $roles),
|
||||
'trust_resolver' => $this->trustResolver,
|
||||
);
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
return $variables;
|
||||
}
|
||||
}
|
||||
41
core/vendor/symfony/security/Core/Authorization/Voter/RoleHierarchyVoter.php
vendored
Normal file
41
core/vendor/symfony/security/Core/Authorization/Voter/RoleHierarchyVoter.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
|
||||
|
||||
/**
|
||||
* RoleHierarchyVoter uses a RoleHierarchy to determine the roles granted to
|
||||
* the user before voting.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class RoleHierarchyVoter extends RoleVoter
|
||||
{
|
||||
private $roleHierarchy;
|
||||
|
||||
public function __construct(RoleHierarchyInterface $roleHierarchy, $prefix = 'ROLE_')
|
||||
{
|
||||
$this->roleHierarchy = $roleHierarchy;
|
||||
|
||||
parent::__construct($prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function extractRoles(TokenInterface $token)
|
||||
{
|
||||
return $this->roleHierarchy->getReachableRoles($token->getRoles());
|
||||
}
|
||||
}
|
||||
79
core/vendor/symfony/security/Core/Authorization/Voter/RoleVoter.php
vendored
Normal file
79
core/vendor/symfony/security/Core/Authorization/Voter/RoleVoter.php
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* RoleVoter votes if any attribute starts with a given prefix.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class RoleVoter implements VoterInterface
|
||||
{
|
||||
private $prefix;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $prefix The role prefix
|
||||
*/
|
||||
public function __construct($prefix = 'ROLE_')
|
||||
{
|
||||
$this->prefix = $prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supportsAttribute($attribute)
|
||||
{
|
||||
return 0 === strpos($attribute, $this->prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function supportsClass($class)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function vote(TokenInterface $token, $object, array $attributes)
|
||||
{
|
||||
$result = VoterInterface::ACCESS_ABSTAIN;
|
||||
$roles = $this->extractRoles($token);
|
||||
|
||||
foreach ($attributes as $attribute) {
|
||||
if (!$this->supportsAttribute($attribute)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$result = VoterInterface::ACCESS_DENIED;
|
||||
foreach ($roles as $role) {
|
||||
if ($attribute === $role->getRole()) {
|
||||
return VoterInterface::ACCESS_GRANTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function extractRoles(TokenInterface $token)
|
||||
{
|
||||
return $token->getRoles();
|
||||
}
|
||||
}
|
||||
85
core/vendor/symfony/security/Core/Authorization/Voter/Voter.php
vendored
Normal file
85
core/vendor/symfony/security/Core/Authorization/Voter/Voter.php
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* Voter is an abstract default implementation of a voter.
|
||||
*
|
||||
* @author Roman Marintšenko <inoryy@gmail.com>
|
||||
* @author Grégoire Pineau <lyrixx@lyrixx.info>
|
||||
*/
|
||||
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)
|
||||
{
|
||||
// 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)) {
|
||||
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)) {
|
||||
// grant access as soon as at least one attribute returns a positive response
|
||||
return self::ACCESS_GRANTED;
|
||||
}
|
||||
}
|
||||
|
||||
return $vote;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the attribute and subject are supported by this voter.
|
||||
*
|
||||
* @param string $attribute An attribute
|
||||
* @param mixed $subject The subject to secure, e.g. an object the user wants to access or any other PHP type
|
||||
*
|
||||
* @return bool True if the attribute and subject are supported, false otherwise
|
||||
*/
|
||||
abstract protected function supports($attribute, $subject);
|
||||
|
||||
/**
|
||||
* Perform a single access check operation on a given attribute, subject and token.
|
||||
*
|
||||
* @param string $attribute
|
||||
* @param mixed $subject
|
||||
* @param TokenInterface $token
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract protected function voteOnAttribute($attribute, $subject, TokenInterface $token);
|
||||
}
|
||||
62
core/vendor/symfony/security/Core/Authorization/Voter/VoterInterface.php
vendored
Normal file
62
core/vendor/symfony/security/Core/Authorization/Voter/VoterInterface.php
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* VoterInterface is the interface implemented by all voters.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
interface VoterInterface
|
||||
{
|
||||
const ACCESS_GRANTED = 1;
|
||||
const ACCESS_ABSTAIN = 0;
|
||||
const ACCESS_DENIED = -1;
|
||||
|
||||
/**
|
||||
* Checks if the voter supports the given attribute.
|
||||
*
|
||||
* @param string $attribute An attribute
|
||||
*
|
||||
* @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 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);
|
||||
}
|
||||
91
core/vendor/symfony/security/Core/Encoder/BCryptPasswordEncoder.php
vendored
Normal file
91
core/vendor/symfony/security/Core/Encoder/BCryptPasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
|
||||
/**
|
||||
* @author Elnur Abdurrakhimov <elnur@elnur.pro>
|
||||
* @author Terje Bråten <terje@braten.be>
|
||||
*/
|
||||
class BCryptPasswordEncoder extends BasePasswordEncoder
|
||||
{
|
||||
const MAX_PASSWORD_LENGTH = 72;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $cost;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param int $cost The algorithmic cost that should be used
|
||||
*
|
||||
* @throws \RuntimeException When no BCrypt encoder is available
|
||||
* @throws \InvalidArgumentException if cost is out of range
|
||||
*/
|
||||
public function __construct($cost)
|
||||
{
|
||||
$cost = (int) $cost;
|
||||
if ($cost < 4 || $cost > 31) {
|
||||
throw new \InvalidArgumentException('Cost must be in the range of 4-31.');
|
||||
}
|
||||
|
||||
$this->cost = $cost;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes the raw password.
|
||||
*
|
||||
* It doesn't work with PHP versions lower than 5.3.7, since
|
||||
* the password compat library uses CRYPT_BLOWFISH hash type with
|
||||
* the "$2y$" salt prefix (which is not available in the early PHP versions).
|
||||
*
|
||||
* @see https://github.com/ircmaxell/password_compat/issues/10#issuecomment-11203833
|
||||
*
|
||||
* It is almost best to **not** pass a salt and let PHP generate one for you.
|
||||
*
|
||||
* @param string $raw The password to encode
|
||||
* @param string $salt The salt
|
||||
*
|
||||
* @return string The encoded password
|
||||
*
|
||||
* @throws BadCredentialsException when the given password is too long
|
||||
*
|
||||
* @link http://lxr.php.net/xref/PHP_5_5/ext/standard/password.c#111
|
||||
*/
|
||||
public function encodePassword($raw, $salt)
|
||||
{
|
||||
if ($this->isPasswordTooLong($raw)) {
|
||||
throw new BadCredentialsException('Invalid password.');
|
||||
}
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
return password_hash($raw, PASSWORD_BCRYPT, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isPasswordValid($encoded, $raw, $salt)
|
||||
{
|
||||
return !$this->isPasswordTooLong($raw) && password_verify($raw, $encoded);
|
||||
}
|
||||
}
|
||||
98
core/vendor/symfony/security/Core/Encoder/BasePasswordEncoder.php
vendored
Normal file
98
core/vendor/symfony/security/Core/Encoder/BasePasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
<?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\Encoder;
|
||||
|
||||
/**
|
||||
* BasePasswordEncoder is the base class for all password encoders.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
abstract class BasePasswordEncoder implements PasswordEncoderInterface
|
||||
{
|
||||
const MAX_PASSWORD_LENGTH = 4096;
|
||||
|
||||
/**
|
||||
* Demerges a merge password and salt string.
|
||||
*
|
||||
* @param string $mergedPasswordSalt The merged password and salt string
|
||||
*
|
||||
* @return array An array where the first element is the password and the second the salt
|
||||
*/
|
||||
protected function demergePasswordAndSalt($mergedPasswordSalt)
|
||||
{
|
||||
if (empty($mergedPasswordSalt)) {
|
||||
return array('', '');
|
||||
}
|
||||
|
||||
$password = $mergedPasswordSalt;
|
||||
$salt = '';
|
||||
$saltBegins = strrpos($mergedPasswordSalt, '{');
|
||||
|
||||
if (false !== $saltBegins && $saltBegins + 1 < strlen($mergedPasswordSalt)) {
|
||||
$salt = substr($mergedPasswordSalt, $saltBegins + 1, -1);
|
||||
$password = substr($mergedPasswordSalt, 0, $saltBegins);
|
||||
}
|
||||
|
||||
return array($password, $salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merges a password and a salt.
|
||||
*
|
||||
* @param string $password the password to be used
|
||||
* @param string $salt the salt to be used
|
||||
*
|
||||
* @return string a merged password and salt
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
protected function mergePasswordAndSalt($password, $salt)
|
||||
{
|
||||
if (empty($salt)) {
|
||||
return $password;
|
||||
}
|
||||
|
||||
if (false !== strrpos($salt, '{') || false !== strrpos($salt, '}')) {
|
||||
throw new \InvalidArgumentException('Cannot use { or } in salt.');
|
||||
}
|
||||
|
||||
return $password.'{'.$salt.'}';
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two passwords.
|
||||
*
|
||||
* This method implements a constant-time algorithm to compare passwords to
|
||||
* avoid (remote) timing attacks.
|
||||
*
|
||||
* @param string $password1 The first password
|
||||
* @param string $password2 The second password
|
||||
*
|
||||
* @return bool true if the two passwords are the same, false otherwise
|
||||
*/
|
||||
protected function comparePasswords($password1, $password2)
|
||||
{
|
||||
return hash_equals($password1, $password2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the password is too long.
|
||||
*
|
||||
* @param string $password The password to check
|
||||
*
|
||||
* @return bool true if the password is too long, false otherwise
|
||||
*/
|
||||
protected function isPasswordTooLong($password)
|
||||
{
|
||||
return strlen($password) > static::MAX_PASSWORD_LENGTH;
|
||||
}
|
||||
}
|
||||
28
core/vendor/symfony/security/Core/Encoder/EncoderAwareInterface.php
vendored
Normal file
28
core/vendor/symfony/security/Core/Encoder/EncoderAwareInterface.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?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\Encoder;
|
||||
|
||||
/**
|
||||
* @author Christophe Coevoet <stof@notk.org>
|
||||
*/
|
||||
interface EncoderAwareInterface
|
||||
{
|
||||
/**
|
||||
* Gets the name of the encoder used to encode the password.
|
||||
*
|
||||
* If the method returns null, the standard way to retrieve the encoder
|
||||
* will be used instead.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getEncoderName();
|
||||
}
|
||||
83
core/vendor/symfony/security/Core/Encoder/EncoderFactory.php
vendored
Normal file
83
core/vendor/symfony/security/Core/Encoder/EncoderFactory.php
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
<?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\Encoder;
|
||||
|
||||
/**
|
||||
* A generic encoder factory implementation.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class EncoderFactory implements EncoderFactoryInterface
|
||||
{
|
||||
private $encoders;
|
||||
|
||||
public function __construct(array $encoders)
|
||||
{
|
||||
$this->encoders = $encoders;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getEncoder($user)
|
||||
{
|
||||
$encoderKey = null;
|
||||
|
||||
if ($user instanceof EncoderAwareInterface && (null !== $encoderName = $user->getEncoderName())) {
|
||||
if (!array_key_exists($encoderName, $this->encoders)) {
|
||||
throw new \RuntimeException(sprintf('The encoder "%s" was not configured.', $encoderName));
|
||||
}
|
||||
|
||||
$encoderKey = $encoderName;
|
||||
} else {
|
||||
foreach ($this->encoders as $class => $encoder) {
|
||||
if ((is_object($user) && $user instanceof $class) || (!is_object($user) && (is_subclass_of($user, $class) || $user == $class))) {
|
||||
$encoderKey = $class;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null === $encoderKey) {
|
||||
throw new \RuntimeException(sprintf('No encoder has been configured for account "%s".', is_object($user) ? get_class($user) : $user));
|
||||
}
|
||||
|
||||
if (!$this->encoders[$encoderKey] instanceof PasswordEncoderInterface) {
|
||||
$this->encoders[$encoderKey] = $this->createEncoder($this->encoders[$encoderKey]);
|
||||
}
|
||||
|
||||
return $this->encoders[$encoderKey];
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the actual encoder instance.
|
||||
*
|
||||
* @param array $config
|
||||
*
|
||||
* @return PasswordEncoderInterface
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
private function createEncoder(array $config)
|
||||
{
|
||||
if (!isset($config['class'])) {
|
||||
throw new \InvalidArgumentException(sprintf('"class" must be set in %s.', json_encode($config)));
|
||||
}
|
||||
if (!isset($config['arguments'])) {
|
||||
throw new \InvalidArgumentException(sprintf('"arguments" must be set in %s.', json_encode($config)));
|
||||
}
|
||||
|
||||
$reflection = new \ReflectionClass($config['class']);
|
||||
|
||||
return $reflection->newInstanceArgs($config['arguments']);
|
||||
}
|
||||
}
|
||||
33
core/vendor/symfony/security/Core/Encoder/EncoderFactoryInterface.php
vendored
Normal file
33
core/vendor/symfony/security/Core/Encoder/EncoderFactoryInterface.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* EncoderFactoryInterface to support different encoders for different accounts.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
interface EncoderFactoryInterface
|
||||
{
|
||||
/**
|
||||
* Returns the password encoder to use for the given account.
|
||||
*
|
||||
* @param UserInterface|string $user A UserInterface instance or a class name
|
||||
*
|
||||
* @return PasswordEncoderInterface
|
||||
*
|
||||
* @throws \RuntimeException when no password encoder could be found for the user
|
||||
*/
|
||||
public function getEncoder($user);
|
||||
}
|
||||
72
core/vendor/symfony/security/Core/Encoder/MessageDigestPasswordEncoder.php
vendored
Normal file
72
core/vendor/symfony/security/Core/Encoder/MessageDigestPasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
|
||||
/**
|
||||
* MessageDigestPasswordEncoder uses a message digest algorithm.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class MessageDigestPasswordEncoder extends BasePasswordEncoder
|
||||
{
|
||||
private $algorithm;
|
||||
private $encodeHashAsBase64;
|
||||
private $iterations;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $algorithm The digest algorithm to use
|
||||
* @param bool $encodeHashAsBase64 Whether to base64 encode the password hash
|
||||
* @param int $iterations The number of iterations to use to stretch the password hash
|
||||
*/
|
||||
public function __construct($algorithm = 'sha512', $encodeHashAsBase64 = true, $iterations = 5000)
|
||||
{
|
||||
$this->algorithm = $algorithm;
|
||||
$this->encodeHashAsBase64 = $encodeHashAsBase64;
|
||||
$this->iterations = $iterations;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function encodePassword($raw, $salt)
|
||||
{
|
||||
if ($this->isPasswordTooLong($raw)) {
|
||||
throw new BadCredentialsException('Invalid password.');
|
||||
}
|
||||
|
||||
if (!in_array($this->algorithm, hash_algos(), true)) {
|
||||
throw new \LogicException(sprintf('The algorithm "%s" is not supported.', $this->algorithm));
|
||||
}
|
||||
|
||||
$salted = $this->mergePasswordAndSalt($raw, $salt);
|
||||
$digest = hash($this->algorithm, $salted, true);
|
||||
|
||||
// "stretch" hash
|
||||
for ($i = 1; $i < $this->iterations; ++$i) {
|
||||
$digest = hash($this->algorithm, $digest.$salted, true);
|
||||
}
|
||||
|
||||
return $this->encodeHashAsBase64 ? base64_encode($digest) : bin2hex($digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isPasswordValid($encoded, $raw, $salt)
|
||||
{
|
||||
return !$this->isPasswordTooLong($raw) && $this->comparePasswords($encoded, $this->encodePassword($raw, $salt));
|
||||
}
|
||||
}
|
||||
41
core/vendor/symfony/security/Core/Encoder/PasswordEncoderInterface.php
vendored
Normal file
41
core/vendor/symfony/security/Core/Encoder/PasswordEncoderInterface.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?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\Encoder;
|
||||
|
||||
/**
|
||||
* PasswordEncoderInterface is the interface for all encoders.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
interface PasswordEncoderInterface
|
||||
{
|
||||
/**
|
||||
* Encodes the raw password.
|
||||
*
|
||||
* @param string $raw The password to encode
|
||||
* @param string $salt The salt
|
||||
*
|
||||
* @return string The encoded password
|
||||
*/
|
||||
public function encodePassword($raw, $salt);
|
||||
|
||||
/**
|
||||
* Checks a raw password against an encoded password.
|
||||
*
|
||||
* @param string $encoded An encoded password
|
||||
* @param string $raw A raw password
|
||||
* @param string $salt The salt
|
||||
*
|
||||
* @return bool true if the password is valid, false otherwise
|
||||
*/
|
||||
public function isPasswordValid($encoded, $raw, $salt);
|
||||
}
|
||||
79
core/vendor/symfony/security/Core/Encoder/Pbkdf2PasswordEncoder.php
vendored
Normal file
79
core/vendor/symfony/security/Core/Encoder/Pbkdf2PasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
|
||||
/**
|
||||
* Pbkdf2PasswordEncoder uses the PBKDF2 (Password-Based Key Derivation Function 2).
|
||||
*
|
||||
* Providing a high level of Cryptographic security,
|
||||
* PBKDF2 is recommended by the National Institute of Standards and Technology (NIST).
|
||||
*
|
||||
* But also warrants a warning, using PBKDF2 (with a high number of iterations) slows down the process.
|
||||
* PBKDF2 should be used with caution and care.
|
||||
*
|
||||
* @author Sebastiaan Stok <s.stok@rollerscapes.net>
|
||||
* @author Andrew Johnson
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class Pbkdf2PasswordEncoder extends BasePasswordEncoder
|
||||
{
|
||||
private $algorithm;
|
||||
private $encodeHashAsBase64;
|
||||
private $iterations;
|
||||
private $length;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $algorithm The digest algorithm to use
|
||||
* @param bool $encodeHashAsBase64 Whether to base64 encode the password hash
|
||||
* @param int $iterations The number of iterations to use to stretch the password hash
|
||||
* @param int $length Length of derived key to create
|
||||
*/
|
||||
public function __construct($algorithm = 'sha512', $encodeHashAsBase64 = true, $iterations = 1000, $length = 40)
|
||||
{
|
||||
$this->algorithm = $algorithm;
|
||||
$this->encodeHashAsBase64 = $encodeHashAsBase64;
|
||||
$this->iterations = $iterations;
|
||||
$this->length = $length;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @throws \LogicException when the algorithm is not supported
|
||||
*/
|
||||
public function encodePassword($raw, $salt)
|
||||
{
|
||||
if ($this->isPasswordTooLong($raw)) {
|
||||
throw new BadCredentialsException('Invalid password.');
|
||||
}
|
||||
|
||||
if (!in_array($this->algorithm, hash_algos(), true)) {
|
||||
throw new \LogicException(sprintf('The algorithm "%s" is not supported.', $this->algorithm));
|
||||
}
|
||||
|
||||
$digest = hash_pbkdf2($this->algorithm, $raw, $salt, $this->iterations, $this->length, true);
|
||||
|
||||
return $this->encodeHashAsBase64 ? base64_encode($digest) : bin2hex($digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isPasswordValid($encoded, $raw, $salt)
|
||||
{
|
||||
return !$this->isPasswordTooLong($raw) && $this->comparePasswords($encoded, $this->encodePassword($raw, $salt));
|
||||
}
|
||||
}
|
||||
64
core/vendor/symfony/security/Core/Encoder/PlaintextPasswordEncoder.php
vendored
Normal file
64
core/vendor/symfony/security/Core/Encoder/PlaintextPasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Security\Core\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
|
||||
|
||||
/**
|
||||
* PlaintextPasswordEncoder does not do any encoding.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class PlaintextPasswordEncoder extends BasePasswordEncoder
|
||||
{
|
||||
private $ignorePasswordCase;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param bool $ignorePasswordCase Compare password case-insensitive
|
||||
*/
|
||||
public function __construct($ignorePasswordCase = false)
|
||||
{
|
||||
$this->ignorePasswordCase = $ignorePasswordCase;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function encodePassword($raw, $salt)
|
||||
{
|
||||
if ($this->isPasswordTooLong($raw)) {
|
||||
throw new BadCredentialsException('Invalid password.');
|
||||
}
|
||||
|
||||
return $this->mergePasswordAndSalt($raw, $salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isPasswordValid($encoded, $raw, $salt)
|
||||
{
|
||||
if ($this->isPasswordTooLong($raw)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$pass2 = $this->mergePasswordAndSalt($raw, $salt);
|
||||
|
||||
if (!$this->ignorePasswordCase) {
|
||||
return $this->comparePasswords($encoded, $pass2);
|
||||
}
|
||||
|
||||
return $this->comparePasswords(strtolower($encoded), strtolower($pass2));
|
||||
}
|
||||
}
|
||||
55
core/vendor/symfony/security/Core/Encoder/UserPasswordEncoder.php
vendored
Normal file
55
core/vendor/symfony/security/Core/Encoder/UserPasswordEncoder.php
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* A generic password encoder.
|
||||
*
|
||||
* @author Ariel Ferrandini <arielferrandini@gmail.com>
|
||||
*/
|
||||
class UserPasswordEncoder implements UserPasswordEncoderInterface
|
||||
{
|
||||
/**
|
||||
* @var EncoderFactoryInterface
|
||||
*/
|
||||
private $encoderFactory;
|
||||
|
||||
/**
|
||||
* @param EncoderFactoryInterface $encoderFactory The encoder factory
|
||||
*/
|
||||
public function __construct(EncoderFactoryInterface $encoderFactory)
|
||||
{
|
||||
$this->encoderFactory = $encoderFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function encodePassword(UserInterface $user, $plainPassword)
|
||||
{
|
||||
$encoder = $this->encoderFactory->getEncoder($user);
|
||||
|
||||
return $encoder->encodePassword($plainPassword, $user->getSalt());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isPasswordValid(UserInterface $user, $raw)
|
||||
{
|
||||
$encoder = $this->encoderFactory->getEncoder($user);
|
||||
|
||||
return $encoder->isPasswordValid($user->getPassword(), $raw, $user->getSalt());
|
||||
}
|
||||
}
|
||||
40
core/vendor/symfony/security/Core/Encoder/UserPasswordEncoderInterface.php
vendored
Normal file
40
core/vendor/symfony/security/Core/Encoder/UserPasswordEncoderInterface.php
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<?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\Encoder;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* UserPasswordEncoderInterface is the interface for the password encoder service.
|
||||
*
|
||||
* @author Ariel Ferrandini <arielferrandini@gmail.com>
|
||||
*/
|
||||
interface UserPasswordEncoderInterface
|
||||
{
|
||||
/**
|
||||
* Encodes the plain password.
|
||||
*
|
||||
* @param UserInterface $user The user
|
||||
* @param string $plainPassword The password to encode
|
||||
*
|
||||
* @return string The encoded password
|
||||
*/
|
||||
public function encodePassword(UserInterface $user, $plainPassword);
|
||||
|
||||
/**
|
||||
* @param UserInterface $user The user
|
||||
* @param string $raw A raw password
|
||||
*
|
||||
* @return bool true if the password is valid, false otherwise
|
||||
*/
|
||||
public function isPasswordValid(UserInterface $user, $raw);
|
||||
}
|
||||
35
core/vendor/symfony/security/Core/Event/AuthenticationEvent.php
vendored
Normal file
35
core/vendor/symfony/security/Core/Event/AuthenticationEvent.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?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\Event;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
/**
|
||||
* This is a general purpose authentication event.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class AuthenticationEvent extends Event
|
||||
{
|
||||
private $authenticationToken;
|
||||
|
||||
public function __construct(TokenInterface $token)
|
||||
{
|
||||
$this->authenticationToken = $token;
|
||||
}
|
||||
|
||||
public function getAuthenticationToken()
|
||||
{
|
||||
return $this->authenticationToken;
|
||||
}
|
||||
}
|
||||
37
core/vendor/symfony/security/Core/Event/AuthenticationFailureEvent.php
vendored
Normal file
37
core/vendor/symfony/security/Core/Event/AuthenticationFailureEvent.php
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<?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\Event;
|
||||
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* This event is dispatched on authentication failure.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class AuthenticationFailureEvent extends AuthenticationEvent
|
||||
{
|
||||
private $authenticationException;
|
||||
|
||||
public function __construct(TokenInterface $token, AuthenticationException $ex)
|
||||
{
|
||||
parent::__construct($token);
|
||||
|
||||
$this->authenticationException = $ex;
|
||||
}
|
||||
|
||||
public function getAuthenticationException()
|
||||
{
|
||||
return $this->authenticationException;
|
||||
}
|
||||
}
|
||||
25
core/vendor/symfony/security/Core/Exception/AccessDeniedException.php
vendored
Normal file
25
core/vendor/symfony/security/Core/Exception/AccessDeniedException.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* AccessDeniedException is thrown when the account has not the required role.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class AccessDeniedException extends \RuntimeException
|
||||
{
|
||||
public function __construct($message = 'Access Denied.', \Exception $previous = null)
|
||||
{
|
||||
parent::__construct($message, 403, $previous);
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/AccountExpiredException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/AccountExpiredException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* AccountExpiredException is thrown when the user account has expired.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class AccountExpiredException extends AccountStatusException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Account has expired.';
|
||||
}
|
||||
}
|
||||
67
core/vendor/symfony/security/Core/Exception/AccountStatusException.php
vendored
Normal file
67
core/vendor/symfony/security/Core/Exception/AccountStatusException.php
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
<?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\Exception;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* AccountStatusException is the base class for authentication exceptions
|
||||
* caused by the user account status.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
abstract class AccountStatusException extends AuthenticationException
|
||||
{
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* Get the user.
|
||||
*
|
||||
* @return UserInterface
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the user.
|
||||
*
|
||||
* @param UserInterface $user
|
||||
*/
|
||||
public function setUser(UserInterface $user)
|
||||
{
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
$this->user,
|
||||
parent::serialize(),
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($str)
|
||||
{
|
||||
list($this->user, $parentData) = unserialize($str);
|
||||
|
||||
parent::unserialize($parentData);
|
||||
}
|
||||
}
|
||||
30
core/vendor/symfony/security/Core/Exception/AuthenticationCredentialsNotFoundException.php
vendored
Normal file
30
core/vendor/symfony/security/Core/Exception/AuthenticationCredentialsNotFoundException.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* AuthenticationCredentialsNotFoundException is thrown when an authentication is rejected
|
||||
* because no Token is available.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class AuthenticationCredentialsNotFoundException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Authentication credentials could not be found.';
|
||||
}
|
||||
}
|
||||
87
core/vendor/symfony/security/Core/Exception/AuthenticationException.php
vendored
Normal file
87
core/vendor/symfony/security/Core/Exception/AuthenticationException.php
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
<?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\Exception;
|
||||
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
|
||||
/**
|
||||
* AuthenticationException is the base class for all authentication exceptions.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class AuthenticationException extends \RuntimeException implements \Serializable
|
||||
{
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* Get the token.
|
||||
*
|
||||
* @return TokenInterface
|
||||
*/
|
||||
public function getToken()
|
||||
{
|
||||
return $this->token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the token.
|
||||
*
|
||||
* @param TokenInterface $token
|
||||
*/
|
||||
public function setToken(TokenInterface $token)
|
||||
{
|
||||
$this->token = $token;
|
||||
}
|
||||
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
$this->token,
|
||||
$this->code,
|
||||
$this->message,
|
||||
$this->file,
|
||||
$this->line,
|
||||
));
|
||||
}
|
||||
|
||||
public function unserialize($str)
|
||||
{
|
||||
list(
|
||||
$this->token,
|
||||
$this->code,
|
||||
$this->message,
|
||||
$this->file,
|
||||
$this->line
|
||||
) = unserialize($str);
|
||||
}
|
||||
|
||||
/**
|
||||
* Message key to be used by the translation component.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'An authentication exception occurred.';
|
||||
}
|
||||
|
||||
/**
|
||||
* Message data to be used by the translation component.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessageData()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
}
|
||||
31
core/vendor/symfony/security/Core/Exception/AuthenticationExpiredException.php
vendored
Normal file
31
core/vendor/symfony/security/Core/Exception/AuthenticationExpiredException.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* AuthenticationServiceException is thrown when an authenticated token becomes un-authentcated between requests.
|
||||
*
|
||||
* In practice, this is due to the User changing between requests (e.g. password changes),
|
||||
* causes the token to become un-authenticated.
|
||||
*
|
||||
* @author Ryan Weaver <ryan@knpuniversity.com>
|
||||
*/
|
||||
class AuthenticationExpiredException extends AccountStatusException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Authentication expired because your account information has changed.';
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/AuthenticationServiceException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/AuthenticationServiceException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* AuthenticationServiceException is thrown when an authentication request could not be processed due to a system problem.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class AuthenticationServiceException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Authentication request could not be processed due to a system problem.';
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/BadCredentialsException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/BadCredentialsException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* BadCredentialsException is thrown when the user credentials are invalid.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class BadCredentialsException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Invalid credentials.';
|
||||
}
|
||||
}
|
||||
30
core/vendor/symfony/security/Core/Exception/CookieTheftException.php
vendored
Normal file
30
core/vendor/symfony/security/Core/Exception/CookieTheftException.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* This exception is thrown when the RememberMeServices implementation
|
||||
* detects that a presented cookie has already been used by someone else.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class CookieTheftException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Cookie has already been used by someone else.';
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/CredentialsExpiredException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/CredentialsExpiredException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* CredentialsExpiredException is thrown when the user account credentials have expired.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class CredentialsExpiredException extends AccountStatusException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Credentials have expired.';
|
||||
}
|
||||
}
|
||||
79
core/vendor/symfony/security/Core/Exception/CustomUserMessageAuthenticationException.php
vendored
Normal file
79
core/vendor/symfony/security/Core/Exception/CustomUserMessageAuthenticationException.php
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* An authentication exception where you can control the message shown to the user.
|
||||
*
|
||||
* Be sure that the message passed to this exception is something that
|
||||
* can be shown safely to your user. In other words, avoid catching
|
||||
* other exceptions and passing their message directly to this class.
|
||||
*
|
||||
* @author Ryan Weaver <ryan@knpuniversity.com>
|
||||
*/
|
||||
class CustomUserMessageAuthenticationException extends AuthenticationException
|
||||
{
|
||||
private $messageKey;
|
||||
|
||||
private $messageData = array();
|
||||
|
||||
public function __construct($message = '', array $messageData = array(), $code = 0, \Exception $previous = null)
|
||||
{
|
||||
parent::__construct($message, $code, $previous);
|
||||
|
||||
$this->setSafeMessage($message, $messageData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a message that will be shown to the user.
|
||||
*
|
||||
* @param string $messageKey The message or message key
|
||||
* @param array $messageData Data to be passed into the translator
|
||||
*/
|
||||
public function setSafeMessage($messageKey, array $messageData = array())
|
||||
{
|
||||
$this->messageKey = $messageKey;
|
||||
$this->messageData = $messageData;
|
||||
}
|
||||
|
||||
public function getMessageKey()
|
||||
{
|
||||
return $this->messageKey;
|
||||
}
|
||||
|
||||
public function getMessageData()
|
||||
{
|
||||
return $this->messageData;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
parent::serialize(),
|
||||
$this->messageKey,
|
||||
$this->messageData,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($str)
|
||||
{
|
||||
list($parentData, $this->messageKey, $this->messageData) = unserialize($str);
|
||||
|
||||
parent::unserialize($parentData);
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/DisabledException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/DisabledException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* DisabledException is thrown when the user account is disabled.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class DisabledException extends AccountStatusException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Account is disabled.';
|
||||
}
|
||||
}
|
||||
21
core/vendor/symfony/security/Core/Exception/ExceptionInterface.php
vendored
Normal file
21
core/vendor/symfony/security/Core/Exception/ExceptionInterface.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* Base ExceptionInterface for the Security component.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
interface ExceptionInterface
|
||||
{
|
||||
}
|
||||
31
core/vendor/symfony/security/Core/Exception/InsufficientAuthenticationException.php
vendored
Normal file
31
core/vendor/symfony/security/Core/Exception/InsufficientAuthenticationException.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* InsufficientAuthenticationException is thrown if the user credentials are not sufficiently trusted.
|
||||
*
|
||||
* This is the case when a user is anonymous and the resource to be displayed has an access role.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class InsufficientAuthenticationException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Not privileged to request the resource.';
|
||||
}
|
||||
}
|
||||
21
core/vendor/symfony/security/Core/Exception/InvalidArgumentException.php
vendored
Normal file
21
core/vendor/symfony/security/Core/Exception/InvalidArgumentException.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* Base InvalidArgumentException for the Security component.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
|
||||
{
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/InvalidCsrfTokenException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/InvalidCsrfTokenException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* This exception is thrown when the csrf token is invalid.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class InvalidCsrfTokenException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Invalid CSRF token.';
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/LockedException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/LockedException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* LockedException is thrown if the user account is locked.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class LockedException extends AccountStatusException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Account is locked.';
|
||||
}
|
||||
}
|
||||
25
core/vendor/symfony/security/Core/Exception/LogoutException.php
vendored
Normal file
25
core/vendor/symfony/security/Core/Exception/LogoutException.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* LogoutException is thrown when the account cannot be logged out.
|
||||
*
|
||||
* @author Jeremy Mikola <jmikola@gmail.com>
|
||||
*/
|
||||
class LogoutException extends \RuntimeException
|
||||
{
|
||||
public function __construct($message = 'Logout Exception', \Exception $previous = null)
|
||||
{
|
||||
parent::__construct($message, 403, $previous);
|
||||
}
|
||||
}
|
||||
30
core/vendor/symfony/security/Core/Exception/NonceExpiredException.php
vendored
Normal file
30
core/vendor/symfony/security/Core/Exception/NonceExpiredException.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* NonceExpiredException is thrown when an authentication is rejected because
|
||||
* the digest nonce has expired.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class NonceExpiredException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Digest nonce has expired.';
|
||||
}
|
||||
}
|
||||
30
core/vendor/symfony/security/Core/Exception/ProviderNotFoundException.php
vendored
Normal file
30
core/vendor/symfony/security/Core/Exception/ProviderNotFoundException.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* ProviderNotFoundException is thrown when no AuthenticationProviderInterface instance
|
||||
* supports an authentication Token.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class ProviderNotFoundException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'No authentication provider found to support the authentication token.';
|
||||
}
|
||||
}
|
||||
21
core/vendor/symfony/security/Core/Exception/RuntimeException.php
vendored
Normal file
21
core/vendor/symfony/security/Core/Exception/RuntimeException.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* Base RuntimeException for the Security component.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class RuntimeException extends \RuntimeException implements ExceptionInterface
|
||||
{
|
||||
}
|
||||
35
core/vendor/symfony/security/Core/Exception/SessionUnavailableException.php
vendored
Normal file
35
core/vendor/symfony/security/Core/Exception/SessionUnavailableException.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* This exception is thrown when no session is available.
|
||||
*
|
||||
* Possible reasons for this are:
|
||||
*
|
||||
* a) The session timed out because the user waited too long.
|
||||
* b) The user has disabled cookies, and a new session is started on each
|
||||
* request.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class SessionUnavailableException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'No session available, it either timed out or cookies are not enabled.';
|
||||
}
|
||||
}
|
||||
29
core/vendor/symfony/security/Core/Exception/TokenNotFoundException.php
vendored
Normal file
29
core/vendor/symfony/security/Core/Exception/TokenNotFoundException.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* TokenNotFoundException is thrown if a Token cannot be found.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class TokenNotFoundException extends AuthenticationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'No token could be found.';
|
||||
}
|
||||
}
|
||||
22
core/vendor/symfony/security/Core/Exception/UnsupportedUserException.php
vendored
Normal file
22
core/vendor/symfony/security/Core/Exception/UnsupportedUserException.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* This exception is thrown when an account is reloaded from a provider which
|
||||
* doesn't support the passed implementation of UserInterface.
|
||||
*
|
||||
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
||||
*/
|
||||
class UnsupportedUserException extends AuthenticationServiceException
|
||||
{
|
||||
}
|
||||
80
core/vendor/symfony/security/Core/Exception/UsernameNotFoundException.php
vendored
Normal file
80
core/vendor/symfony/security/Core/Exception/UsernameNotFoundException.php
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
<?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\Exception;
|
||||
|
||||
/**
|
||||
* UsernameNotFoundException is thrown if a User cannot be found by its username.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Alexander <iam.asm89@gmail.com>
|
||||
*/
|
||||
class UsernameNotFoundException extends AuthenticationException
|
||||
{
|
||||
private $username;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageKey()
|
||||
{
|
||||
return 'Username could not be found.';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the username.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
return $this->username;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the username.
|
||||
*
|
||||
* @param string $username
|
||||
*/
|
||||
public function setUsername($username)
|
||||
{
|
||||
$this->username = $username;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
$this->username,
|
||||
parent::serialize(),
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function unserialize($str)
|
||||
{
|
||||
list($this->username, $parentData) = unserialize($str);
|
||||
|
||||
parent::unserialize($parentData);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMessageData()
|
||||
{
|
||||
return array('{{ username }}' => $this->username);
|
||||
}
|
||||
}
|
||||
19
core/vendor/symfony/security/Core/LICENSE
vendored
Normal file
19
core/vendor/symfony/security/Core/LICENSE
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2004-2016 Fabien Potencier
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
23
core/vendor/symfony/security/Core/README.md
vendored
Normal file
23
core/vendor/symfony/security/Core/README.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
Security Component - Core
|
||||
=========================
|
||||
|
||||
Security provides an infrastructure for sophisticated authorization systems,
|
||||
which makes it possible to easily separate the actual authorization logic from
|
||||
so called user providers that hold the users credentials. It is inspired by
|
||||
the Java Spring framework.
|
||||
|
||||
Resources
|
||||
---------
|
||||
|
||||
Documentation:
|
||||
|
||||
https://symfony.com/doc/2.8/book/security.html
|
||||
|
||||
Tests
|
||||
-----
|
||||
|
||||
You can run the unit tests with the following command:
|
||||
|
||||
$ cd path/to/Symfony/Component/Security/Core/
|
||||
$ composer.phar install --dev
|
||||
$ phpunit
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.ar.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.ar.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.az.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.az.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.bg.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.bg.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.ca.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.ca.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.cs.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.cs.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.da.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.da.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.de.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.de.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.el.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.el.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.en.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.en.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.es.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.es.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.fa.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.fa.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.fr.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.fr.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.gl.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.gl.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.he.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.he.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.hr.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.hr.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
71
core/vendor/symfony/security/Core/Resources/translations/security.hu.xlf
vendored
Normal file
71
core/vendor/symfony/security/Core/Resources/translations/security.hu.xlf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user