#RapsysAir configuration
rapsys_air:
    #Contact
    contact:
        name: 'Raphaël Gertz'
        mail: 'airlibre@rapsys.eu'

#RapsysUser configuration
rapsys_user:
    #Class replacement
    class:
        group: 'Rapsys\AirBundle\Entity\Group'
        civility: 'Rapsys\AirBundle\Entity\Civility'
        user: 'Rapsys\AirBundle\Entity\User'
    #Default replacement
    default:
        group: [ 'User' ]
        civility: 'Mister'
    #Route replacement
    route:
        index:
            name: 'rapsys_air'
    #Translate replacement
    translate: [ 'title', 'site.title', 'copy.by', 'copy.long', 'copy.short' ]
    #Languages replacement
    languages:
        en: 'English'
        fr: 'French'
    #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:
                    by: '%rapsys_air.copy.by%'
                    link: '%rapsys_air.copy.link%'
                    long: '%rapsys_air.copy.long%'
                    short: '%rapsys_air.copy.short%'
                    title: '%rapsys_air.copy.title%'
                site:
                    ico: '%rapsys_air.site.ico%'
                    logo: '%rapsys_air.site.logo%'
                    png: '%rapsys_air.site.png%'
                    svg: '%rapsys_air.site.svg%'
                    title: '%rapsys_air.site.title%'
                    url: '%rapsys_air.site.url%'
    #Recover replacement
    recover:
        route:
            index: 'site.url'
            recover_mail: 'recover_url'
        view:
            name: '@RapsysAir/form/recover.html.twig'
            context:
                title: 'Recover'
                copy:
                    by: '%rapsys_air.copy.by%'
                    link: '%rapsys_air.copy.link%'
                    long: '%rapsys_air.copy.long%'
                    short: '%rapsys_air.copy.short%'
                    title: '%rapsys_air.copy.title%'
                site:
                    ico: '%rapsys_air.site.ico%'
                    logo: '%rapsys_air.site.logo%'
                    png: '%rapsys_air.site.png%'
                    svg: '%rapsys_air.site.svg%'
                    title: '%rapsys_air.site.title%'
                    url: '%rapsys_air.site.url%'
        mail:
            subject: 'Welcome back %%recipient_name%% 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:
                    by: '%rapsys_air.copy.by%'
                    link: '%rapsys_air.copy.link%'
                    long: '%rapsys_air.copy.long%'
                    short: '%rapsys_air.copy.short%'
                    title: '%rapsys_air.copy.title%'
                site:
                    ico: '%rapsys_air.site.ico%'
                    logo: '%rapsys_air.site.logo%'
                    png: '%rapsys_air.site.png%'
                    svg: '%rapsys_air.site.svg%'
                    title: '%rapsys_air.site.title%'
                    url: '%rapsys_air.site.url%'
        mail:
            subject: 'Welcome back %%recipient_name%% 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:
                    by: '%rapsys_air.copy.by%'
                    link: '%rapsys_air.copy.link%'
                    long: '%rapsys_air.copy.long%'
                    short: '%rapsys_air.copy.short%'
                    title: '%rapsys_air.copy.title%'
                site:
                    ico: '%rapsys_air.site.ico%'
                    logo: '%rapsys_air.site.logo%'
                    png: '%rapsys_air.site.png%'
                    svg: '%rapsys_air.site.svg%'
                    title: '%rapsys_air.site.title%'
                    url: '%rapsys_air.site.url%'
        mail:
            subject: 'Welcome %%recipient_name%% to %%site.title%%'
            html: '@RapsysAir/mail/register.html.twig'
            text: '@RapsysAir/mail/register.text.twig'
            context:

#Doctrine configuration
doctrine:
    #Dbal configuration
    dbal:
        mapping_types:
            enum: string
    #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\Civility: Rapsys\AirBundle\Entity\Civility
            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'
    #error_controller: 'Rapsys\AirBundle\Controller\ErrorController::show'
    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 twig intl extension
    #XXX: https://www.php.net/manual/en/class.intldateformatter.php
    #XXX: https://stackoverflow.com/questions/25948853/how-to-install-the-intl-extension-for-twig
    rapsys_air.twig.intl:
        class: 'Twig\Extensions\IntlExtension'
        tags: [ 'twig.extension' ]
    #new TwigFilter('markdown_to_html', ['Twig\\Extra\\Markdown\\MarkdownRuntime', 'convert'], ['is_safe' => ['all']]),
    #new TwigFilter('html_to_markdown', 'Twig\\Extra\\Markdown\\twig_html_to_markdown', ['is_safe' => ['all']]),
    #Register twig markdown_to_html extension
    #    #class: 'Twig\Extra\Markdown\DefaultMarkdown'
    #rapsys_air.twig.markdown_eruse:
    #    class: 'Twig\Extra\Markdown\DefaultMarkdown'
    #rapsys_air.twig.markdown_runtime:
    #    class: 'Twig\Extra\Markdown\MarkdownRuntime'
    #    arguments: [ '@rapsys_air.twig.markdown_eruse' ]
    #rapsys_air.markdown:
    #    class: 'Twig\Extra\Markdown\MarkdownExtension'
    #    tags: [ 'twig.extension' ]
    #Register twig pack extension
    #rapsys_pack.pack_extension:
    #    class: 'Rapsys\PackBundle\Twig\PackExtension'
    #    arguments: [ '@file_locator', '@service_container', '@rapsys_pack.path_package' ]
    #    tags: [ 'twig.extension' ]
    #Register application controller
    Rapsys\AirBundle\Controller\ApplicationController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register default controller
    Rapsys\AirBundle\Controller\DefaultController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register location controller
    Rapsys\AirBundle\Controller\LocationController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register user controller
    Rapsys\AirBundle\Controller\UserController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register session controller
    Rapsys\AirBundle\Controller\SessionController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register snippet controller
    Rapsys\AirBundle\Controller\SnippetController:
        arguments: [ '@service_container', '@router', '@request_stack', '@translator' ]
        tags: [ 'controller.service_arguments' ]
    #Register error controller
    Rapsys\AirBundle\Controller\ErrorController:
        arguments: [ '@service_container', '@router', '@request_stack', '@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', '@request_stack', '@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\LocationType:
        tags: [ 'form.type' ]
    Rapsys\AirBundle\Form\SessionType:
        arguments: [ '@doctrine' ]
        tags: [ 'form.type' ]
    Rapsys\AirBundle\Form\Extension\Type\HiddenEntityType:
        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