<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
	<parameters>
        <parameter key="office_brain_access_management.access_configuration.class">OfficeBrain\Bundle\AccessManagementBundle\Listener\AccessConfigurationListener</parameter>
        <parameter key="office_brain_access_management.access_management_service">OfficeBrain\Bundle\AccessManagementBundle\Manager\Service\AccessManagementService</parameter>
        <parameter key="office_brain_access_management.access_controller.class">OfficeBrain\Bundle\AccessManagementBundle\Listener\ControllerAccessListener</parameter>
        <parameter key="office_brain_access_management.user_access_controller.class">OfficeBrain\Bundle\AccessManagementBundle\Listener\UserAccessListener</parameter>
    </parameters>
    <services>
        
        <service id="office_brain_access_management.access_configuration" class="%office_brain_access_management.access_configuration.class%" scope="request">
        	<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequestPrepareAccessAndConfigurationRules" prority='1'/>
        	<argument type="service" id="kernel" />
            <argument type="service" id="doctrine.orm.entity_manager"  />
            <argument type="service" id="security.context"  />
            <argument type="service" id="router"/>
        </service>
        <service id="office_brain_access_management.access_configuration_error" class="%office_brain_access_management.access_configuration.class%" scope="request">
        	<tag name="kernel.event_listener" event="kernel.exception" method="onKernelRequestPrepareAccessAndConfigurationRules" prority='1'/>
        	<argument type="service" id="kernel" />
            <argument type="service" id="doctrine.orm.entity_manager"  />
            <argument type="service" id="security.context"  />
            <argument type="service" id="router"/>
        </service>
        
        <service id="office_brain_get_project_setting" class="OfficeBrain\Bundle\AccessManagementBundle\Service\ProjectSetting">
            <argument type="service" id="request" strict="false"/>
        </service>
        
        <!--service id="office_brain_access_management_user_access_listener" class="%office_brain_access_management.user_access_controller.class%" scope="request" >
            <argument type="service" id="security.context" />
            <argument type="service" id="request" strict="false"/>
            <tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" prority='1000'/>
        </service-->

        <service id="office_brain_access_management_service_factory" class="%office_brain_access_management.access_management_service%"/>

        <service id="abstract_office_brain_access_management_access_manager" class="%office_brain_access_management.access_management_service%" abstract="true">
             <argument type="service" id="doctrine.orm.entity_manager"/>
             <argument type="service" id="request" strict="false"/>
             <argument type="service" id="office_brain_session_manager"/>
        </service>
        
        <service id="access_authorized_exception_factory" class="OfficeBrain\Bundle\AccessManagementBundle\Manager\Service\AccessAuthorizedExceptionService" />

        <service id="access_authorized_exception" class="OfficeBrain\Bundle\AccessManagementBundle\Manager\Service\AccessAuthorizedExceptionService" scope="request">
             <factory service="access_authorized_exception_factory" method="initFactory"/>
             <argument type="service" id="doctrine.orm.entity_manager"/>
             <argument type="service" id="request" strict="false"/>
             <argument type="service" id="security.context"/>
        </service>
        
        <service id="office_brain_access_management_access_manager" class="%office_brain_access_management.access_management_service%" scope='request' parent="abstract_office_brain_access_management_access_manager">
            <factory service="office_brain_access_management_service_factory" method="initFactory"/>
        </service>
        
        <service id="office_brain_access_management_site_access_manager" class="%office_brain_access_management.access_management_service%" scope='request' parent="abstract_office_brain_access_management_access_manager">
             <factory service="office_brain_access_management_service_factory" method="initSiteFactory"/>
             <argument type="service" id="office_brain_sitemap_manager"/>
             <argument type="service" id="form.factory"/>
        </service>
        
        <service id="office_brain_access_management_sub_site_access_manager" class="%office_brain_access_management.access_management_service%" scope='request' parent="abstract_office_brain_access_management_access_manager">
             <factory service="office_brain_access_management_service_factory" method="initSubSiteFactory"/>
             <argument type="service" id="office_brain_sitemap_manager"/>
             <argument type="service" id="form.factory"/>
        </service>
        
        <service id="office_brain_access_management_site_user_access_manager" class="%office_brain_access_management.access_management_service%" scope='request' parent="abstract_office_brain_access_management_access_manager">
             <factory service="office_brain_access_management_service_factory" method="initSiteUserFactory"/>
             <argument type="service" id="officebrain_user.user_repository"/>
             <argument type="service" id="form.factory"/>
        </service>
        
        

        <!--service id="office_brain_access_management_kernel_exception" class="OfficeBrain\Bundle\AccessManagementBundle\Listener\ExceptionListener">
            <tag name="kernel.event_listener" event="kernel.exception" method="onKernelException" prority='1'/>
            <argument type="service" id="service_container" />
            <argument type="service" id="kernel" />
            <argument type="service" id="doctrine.orm.entity_manager"  />
        </service-->
        
        
        
        
    </services>
</container>
