Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php
Строк: 184
<?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 SymfonyComponentSecurityCoreAuthorization;

use 
SymfonyComponentSecurityCoreAuthenticationAuthenticationManagerInterface;
use 
SymfonyComponentSecurityCoreAuthenticationTokenStorageTokenStorageInterface;
use 
SymfonyComponentSecurityCoreExceptionAuthenticationCredentialsNotFoundException;

/**
 * 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 $tokenStorageAuthenticationManagerInterface $authenticationManagerAccessDecisionManagerInterface $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);
    }
}
Онлайн: 3
Реклама