Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Security/Http/Firewall/AccessListener.php
Строк: 160
<?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 SymfonyComponentSecurityHttpFirewall;

use 
SymfonyComponentSecurityCoreAuthorizationAccessDecisionManagerInterface;
use 
SymfonyComponentSecurityHttpAccessMapInterface;
use 
SymfonyComponentSecurityCoreAuthenticationAuthenticationManagerInterface;
use 
SymfonyComponentSecurityCoreAuthenticationTokenStorageTokenStorageInterface;
use 
SymfonyComponentHttpKernelEventGetResponseEvent;
use 
SymfonyComponentSecurityCoreExceptionAuthenticationCredentialsNotFoundException;
use 
SymfonyComponentSecurityCoreExceptionAccessDeniedException;

/**
 * AccessListener enforces access control rules.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class AccessListener implements ListenerInterface
{
    private 
$tokenStorage;
    private 
$accessDecisionManager;
    private 
$map;
    private 
$authManager;

    public function 
__construct(TokenStorageInterface $tokenStorageAccessDecisionManagerInterface $accessDecisionManagerAccessMapInterface $mapAuthenticationManagerInterface $authManager)
    {
        
$this->tokenStorage $tokenStorage;
        
$this->accessDecisionManager $accessDecisionManager;
        
$this->map $map;
        
$this->authManager $authManager;
    }

    
/**
     * Handles access authorization.
     *
     * @param GetResponseEvent $event A GetResponseEvent instance
     *
     * @throws AccessDeniedException
     * @throws AuthenticationCredentialsNotFoundException
     */
    
public function handle(GetResponseEvent $event)
    {
        if (
null === $token $this->tokenStorage->getToken()) {
            throw new 
AuthenticationCredentialsNotFoundException('A Token was not found in the SecurityContext.');
        }

        
$request $event->getRequest();

        list(
$attributes) = $this->map->getPatterns($request);

        if (
null === $attributes) {
            return;
        }

        if (!
$token->isAuthenticated()) {
            
$token $this->authManager->authenticate($token);
            
$this->tokenStorage->setToken($token);
        }

        if (!
$this->accessDecisionManager->decide($token$attributes$request)) {
            throw new 
AccessDeniedException();
        }
    }
}
Онлайн: 0
Реклама