<?php
/*
* Este arquivo é parte do package Ambiente Bundle.
*
* (c) Laino Santos <lainosantos@recife.pe.gov.br>
*
* Para informações completas sobre copyright e licença, por favor ver o
* arquivo LICENCE distribuído juntamente com este código.
*/
namespace Emprel\Ambiente\Bundle\Event;
use Emprel\Ambiente\Bundle\Utils\Rede;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
/**
* Seta os atributos de ambiente na request.
*
* @package Emprel\Ambiente\Bundle\Event
* @author Laino Santos <lainosantos@recife.pe.gov.br>
*/
class DominioRestrictListener
{
/**
* @var ContainerInterface Container do Symfony.
*/
protected $container;
/**
* {@inheritdoc}
*/
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
$restringirAcessoInternoVhostExterno = !$this->container->getParameter('emprel_ambiente.acesso_interno_host_externo');
if ($request->attributes->has('_acesso_interno_host_externo')) {
$restringirAcessoInternoVhostExterno = !$request->attributes->get('_acesso_interno_host_externo', true);
}
if ((Rede::isVhostInterno() && !Rede::isRedeInterna($request)) ||
(!Rede::isVhostInterno() && Rede::isRedeInterna($request) && $restringirAcessoInternoVhostExterno)) {
throw new AccessDeniedHttpException('Requisição não permitida para o host.');
}
}
/**
* {@inheritdoc}
*/
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
}