#RapsysAir configuration
rapsys_air:
    #Contact
    contact:
        name: 'Raphaël Gertz'
        mail: 'airlibre@rapsys.eu'
    #Copyright
    copy:
        long: 'Raphaël Gertz all rights reserved'
        short: 'Copyright 2019'

#RapsysUser configuration
rapsys_user:
    #Class replacement
    class:
        group: 'Rapsys\AirBundle\Entity\Group'
        title: 'Rapsys\AirBundle\Entity\Title'
        user: 'Rapsys\AirBundle\Entity\User'
    #Default replacement
    default:
        group: [ 'Senior' ]
        title: 'Mister'
    #Route replacement
    route:
        index:
            name: 'rapsys_air'
    #Contact replacement
    contact:
        name: '%rapsys_air.contact.name%'
        mail: '%rapsys_air.contact.mail%'
    #Login replacement
    login:
        route:
            index: 'site_url'
        view:
            name: '@RapsysAir/form/login.html.twig'
            context:
                title: 'Login'
                copy_long: '%rapsys_air.copy.long%'
                copy_short: '%rapsys_air.copy.short%'
                site_ico: '%rapsys_air.site.ico%'
                site_logo: '%rapsys_air.site.logo%'
                site_png: '%rapsys_air.site.png%'
                site_svg: '%rapsys_air.site.svg%'
                site_title: '%rapsys_air.site.title%'
    #Recover replacement
    recover:
        route:
            index: 'site_url'
            recover_mail: 'recover_url'
        view:
            name: '@RapsysAir/form/recover.html.twig'
            context:
                title: 'Recover'
                copy_long: '%rapsys_air.copy.long%'
                copy_short: '%rapsys_air.copy.short%'
                site_ico: '%rapsys_air.site.ico%'
                site_logo: '%rapsys_air.site.logo%'
                site_png: '%rapsys_air.site.png%'
                site_svg: '%rapsys_air.site.svg%'
                site_title: '%rapsys_air.site.title%'
        mail:
            subject: '%%recipient_name%% welcome back to %%site_title%%'
            html: '@RapsysAir/mail/recover.html.twig'
            text: '@RapsysAir/mail/recover.text.twig'
            context:
    #Mail recover replacement
    recover_mail:
        route:
            index: 'site_url'
            recover_mail: 'recover_url'
        view:
            name: '@RapsysAir/form/recover_mail.html.twig'
            context:
                title: 'Mail recover'
                copy_long: '%rapsys_air.copy.long%'
                copy_short: '%rapsys_air.copy.short%'
                site_ico: '%rapsys_air.site.ico%'
                site_logo: '%rapsys_air.site.logo%'
                site_png: '%rapsys_air.site.png%'
                site_svg: '%rapsys_air.site.svg%'
                site_title: '%rapsys_air.site.title%'
        mail:
            subject: '%%recipient_name%% welcome back to %%site_title%%'
            html: '@RapsysAir/mail/recover_mail.html.twig'
            text: '@RapsysAir/mail/recover_mail.text.twig'
            context:
    #Register replacement
    register:
        route:
            index: 'site_url'
        view:
            form: 'Rapsys\AirBundle\Form\RegisterType'
            name: '@RapsysAir/form/register.html.twig'
            context:
                title: 'Register'
                copy_long: '%rapsys_air.copy.long%'
                copy_short: '%rapsys_air.copy.short%'
                site_ico: '%rapsys_air.site.ico%'
                site_logo: '%rapsys_air.site.logo%'
                site_png: '%rapsys_air.site.png%'
                site_svg: '%rapsys_air.site.svg%'
                site_title: '%rapsys_air.site.title%'
        mail:
            subject: '%%recipient_name%% welcome to %%site_title%%'
            html: '@RapsysAir/mail/register.html.twig'
            text: '@RapsysAir/mail/register.text.twig'
            context:

#Doctrine configuration
doctrine:
    #Orm configuration
    orm:
        #Force resolution of UserBundle entities to AirBundle one
        #XXX: without these lines, relations are lookup in parent namespace ignoring AirBundle extension
        resolve_target_entities:
            Rapsys\UserBundle\Entity\Group: Rapsys\AirBundle\Entity\Group
            Rapsys\UserBundle\Entity\Title: Rapsys\AirBundle\Entity\Title
            Rapsys\UserBundle\Entity\User: Rapsys\AirBundle\Entity\User

#Security configuration
security:
    #Set encoders
    encoders:
        #Rapsys\AirBundle\Entity\User: plaintext
        Rapsys\AirBundle\Entity\User:
            algorithm: 'bcrypt'

    #Set providers
    providers:
        database:
            entity:
                class: Rapsys\AirBundle\Entity\User
                property: mail

    #Set firewall
    firewalls:
        #Disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            #Allow anonymous access
            anonymous: ~

            #Disable logout on user change
            logout_on_user_change: true

            #Activate database provider
            provider: database

            #XXX: https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
            #http_basic: ~

            #Set form login
            #XXX: https://symfony.com/doc/current/security/form_login_setup.html
            #TODO: https://symfony.com/doc/current/security/guard_authentication.html
            form_login:
                use_referer: true
                login_path: rapsys_user_login
                check_path: rapsys_user_login
                username_parameter: 'login[mail]'
                password_parameter: 'login[password]'

            #Set logout route
            logout:
                path: rapsys_user_logout
                #XXX: see https://symfony.com/doc/current/security.html#logging-out
                success_handler: Rapsys\AirBundle\Security\LogoutSuccessHandler
                #target: /

            #Set custom access denied handler
            access_denied_handler: Rapsys\AirBundle\Security\AccessDeniedHandler

    #Set role hierarchy
    role_hierarchy:
        ROLE_GUEST: [ 'ROLE_USER' ]
        ROLE_REGULAR: [ 'ROLE_USER', 'ROLE_GUEST' ]
        ROLE_SENIOR: [ 'ROLE_USER', 'ROLE_GUEST', 'ROLE_REGULAR' ]
        ROLE_ADMIN: [ 'ROLE_USER', 'ROLE_GUEST', 'ROLE_REGULAR', 'ROLE_SENIOR' ]

#Framework configuration
framework:
    default_locale: 'fr'
    translator:
        fallbacks: [ 'fr', 'en' ]
    session:
        enabled: true
        handler_id: ~
        cookie_secure: 'auto'
        cookie_samesite: 'lax'
    disallow_search_engine_index: false
#framework:
#    error_controller: Rapsys\AirBundle\Controller\ErrorController::show
#
#    #Assets configuration
#    XXX: don't use that shit, it breaks assets._default_package url generation
#    assets:
#        #Set default base path
#        #base_path: '/bundles/%%s'
#        #Set default version
#        version: 'x'
#        #Set default format
#        version_format: '%%s?v=%%s'
#
#        packages:
#            pack:
#                base_path: '/bundles/%%s'

#Service configuration
services:
    #Register twig file_get_contents extension
    #XXX: obsolete by email.image twig filter in "twig/extensions" or "twig/html-extra"
    rapsys_air.twig.file_get_contents:
        class: 'Rapsys\AirBundle\Twig\FileGetContentsExtension'
        tags: [ 'twig.extension' ]
    #Register twig base64 extension
    rapsys_air.twig.base64:
        class: 'Rapsys\AirBundle\Twig\Base64Extension'
        tags: [ 'twig.extension' ]
    #Register twig bb2html extension
    rapsys_air.twig.bb2html:
        class: 'Rapsys\AirBundle\Twig\Bb2htmlExtension'
        tags: [ 'twig.extension' ]
    #Register default controller
    Rapsys\AirBundle\Controller\DefaultController:
        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register location controller
    Rapsys\AirBundle\Controller\LocationController:
        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register session controller
    Rapsys\AirBundle\Controller\SessionController:
        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register application controller
    Rapsys\AirBundle\Controller\ApplicationController:
        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register user controller
    Rapsys\AirBundle\Controller\UserController:
        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register error controller
#    Rapsys\AirBundle\Controller\ErrorController:
#        arguments: [ '@service_container', '@router', '@rapsys_user.slugger', '@translator' ]
#        tags: [ 'controller.service_arguments' ]
    #Register locale event subscriber
    Rapsys\AirBundle\EventSubscriber\LocaleSubscriber:
        arguments: [ '@router', '%rapsys_air.locales%' ]
        tags: [ 'kernel.event_subscriber' ]
    #Register access denied handler
    Rapsys\AirBundle\Security\AccessDeniedHandler:
        arguments: [ '@service_container', '@twig', '@router', '@translator' ]
    #Register logout success handler
    Rapsys\AirBundle\Security\LogoutSuccessHandler:
        arguments: [ '@router' ]
    #Register air fixtures
    Rapsys\AirBundle\DataFixtures\AirFixtures:
        tags: [ 'doctrine.fixture.orm' ]
    #Replace assets packages
    assets.packages:
        class: 'Symfony\Component\Asset\Packages'
        arguments: [ '@rapsys_pack.path_package' ]
#   #Set version strategy
#   assets.static_version_strategy:
#       class: Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy
#       arguments: [ 'x', '%%s?v=%%s' ]
    Rapsys\AirBundle\Form\ApplicationType:
        arguments: [ '@doctrine', '@translator' ]
        tags: [ 'form.type' ]
    Rapsys\AirBundle\Form\SessionEditType:
        arguments: [ '@doctrine' ]
        tags: [ 'form.type' ]
    Rapsys\AirBundle\Command\AttributeCommand:
        arguments: [ '@doctrine' ]
        tags: [ 'console.command' ]
    Rapsys\AirBundle\Command\WeatherCommand:
        arguments: [ '@doctrine' ]
        tags: [ 'console.command' ]

#Twig Configuration
twig:
    #Enforce debug
    debug: true
    auto_reload: ~
    cache: false
    #Fix form layout for css
    #XXX: @RapsysAir is a shortcut to vendor/rapsys/airbundle/Resources/views directory here
    form_theme: [ '@RapsysAir/form/form_div_layout.html.twig' ]
    #Set twig paths
    paths:
        #Required by email.image(site_logo) directive
        #XXX: Allow twig to resolve @RapsysAir/png/logo.png in vendor/rapsys/airbundle/Resources/public/png/logo.png
        '%kernel.project_dir%/vendor/rapsys/airbundle/Resources/public': 'RapsysAir'
    #Override default exception controller
    #exception_controller: Rapsys\AirBundle\Controller\ErrorController::preview