#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'
+ languages:
+ en_gb: 'English'
+ fr_fr: 'French'
+ locale: 'fr_fr'
+ locales: [ 'fr_fr', 'en_gb' ]
+ logo:
+ alt: 'Libre Air logo'
+ title: 'Libre Air'
#RapsysUser configuration
rapsys_user:
#Class replacement
class:
+ civility: 'Rapsys\AirBundle\Entity\Civility'
+ country: 'Rapsys\AirBundle\Entity\Country'
+ dance: 'Rapsys\AirBundle\Entity\Dance'
group: 'Rapsys\AirBundle\Entity\Group'
- title: 'Rapsys\AirBundle\Entity\Title'
user: 'Rapsys\AirBundle\Entity\User'
+ #Default replacement
+ default:
+ group: [ 'User' ]
+ civility: 'Mister'
+ languages: '%rapsys_air.languages%'
+ locales: '%rapsys_air.locales%'
+ country: 'France'
+ country_favorites: [ 'France', 'Belgium', 'Germany', 'Italy', 'Luxembourg', 'Portugal', 'Spain', 'Switzerland' ]
+ dance_favorites: [ 'Argentine Tango Ball', 'Argentine Tango Ball and class', 'Argentine Tango Ball and concert' ]
+ subscription_favorites: [ 'Milonga Raphaël' ]
#Route replacement
route:
index:
- name: 'rapsys_air_index'
+ name: 'rapsys_air'
+ #Translate replacement
+ translate: [ 'title.page', 'title.section', 'title.site', 'password', 'copy.by', 'copy.long', 'copy.short', 'copy.title', 'logo.alt' ]
#Contact replacement
contact:
+ address: '%rapsys_air.contact.address%'
name: '%rapsys_air.contact.name%'
- mail: '%rapsys_air.contact.mail%'
+ #Context replacement
+ context:
+ copy: '%rapsys_air.copy%'
+ icon: '%rapsys_air.icon%'
+ logo: '%rapsys_air.logo%'
+ root: '%rapsys_air.root%'
+ title:
+ section: 'User'
+ site: '%rapsys_air.title%'
+ #Edit replacement
+ edit:
+ field:
+ pseudonym: false
+ route:
+ index: 'root'
+ view:
+ edit: 'Rapsys\AirBundle\Form\RegisterType'
+ name: '@RapsysAir/form/edit.html.twig'
+ context:
+ title:
+ page: 'Modify account'
+ password: 'Modify password'
#Login replacement
login:
route:
- index: 'site_url'
+ index: 'root'
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%'
+ title:
+ page: 'Login'
#Recover replacement
recover:
route:
- index: 'site_url'
- recover_mail: 'recover_url'
+ index: 'root'
+ recover: '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%'
+ title:
+ page: 'Recover'
mail:
- subject: '%%recipient_name%% welcome back to %%site_title%%'
+ 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_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:
+ field:
+ city: false
+ country: false
+ phone: false
+ pseudonym: false
+ zipcode: false
route:
- index: 'site_url'
+ index: 'root'
+ confirm: 'confirm_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%'
+ title:
+ page: 'Register'
mail:
- subject: '%%recipient_name%% welcome to %%site_title%%'
+ 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:
+ charset: 'utf8mb4'
+ default_table_options:
+ charset: 'utf8mb4'
+ collation: 'utf8mb4_unicode_ci'
+
#Orm configuration
orm:
+ #Replace repository factory
+ repository_factory: 'Rapsys\AirBundle\Factory'
+
#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
+ Rapsys\UserBundle\Entity\Group: 'Rapsys\AirBundle\Entity\Group'
+ Rapsys\UserBundle\Entity\Civility: 'Rapsys\AirBundle\Entity\Civility'
+ Rapsys\UserBundle\Entity\User: 'Rapsys\AirBundle\Entity\User'
+
+ mappings:
+ #Entity short syntax was removed
+ #XXX: see https://github.com/doctrine/orm/issues/8818
+ RapsysAirBundle:
+ type: 'yml'
+ is_bundle: true
+ dir: 'Resources/config/doctrine'
+ prefix: 'Rapsys\AirBundle\Entity'
+ alias: 'RapsysAirBundle'
#Security configuration
security:
- #Set encoders
- encoders:
+ #Set password hashers
+ password_hashers:
#Rapsys\AirBundle\Entity\User: plaintext
Rapsys\AirBundle\Entity\User:
algorithm: 'bcrypt'
providers:
database:
entity:
- class: Rapsys\AirBundle\Entity\User
- property: mail
+ 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)/
+ pattern: '^/(_(profiler|wdt)|css|images|js)/'
security: false
main:
#Allow anonymous access
- anonymous: ~
-
- #Disable logout on user change
- logout_on_user_change: true
+ #anonymous: ~
+ #lazy: true
#Activate database provider
- provider: database
+ 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
+ #XXX: see https://symfony.com/doc/current/security/form_login_setup.html
+ #XXX: see https://symfony.com/doc/current/security/custom_authenticator.html
form_login:
- use_referer: false
- login_path: rapsys_user_login
- check_path: rapsys_user_login
+ #Redirect to referer if different from login route
+ use_referer: true
+ #Login path
+ login_path: 'rapsys_user_login'
+ #Check path
+ check_path: 'rapsys_user_login'
+ #Username parameter
username_parameter: 'login[mail]'
+ #Password parameter
password_parameter: 'login[password]'
#Set logout route
logout:
- path: /logout
- target: /
+ #Logout route
+ path: 'rapsys_user_logout'
+ #Logout default target
+ target: 'rapsys_air'
#Set custom access denied handler
- access_denied_handler: Rapsys\AirBundle\Security\AccessDeniedHandler
+ access_denied_handler: 'Rapsys\AirBundle\Handler\AccessDeniedHandler'
+
+ #Remember me
+ #XXX: see https://symfony.com/doc/current/security/remember_me.html
+ remember_me:
+ #Use APP_SECRET
+ secret: '%kernel.secret%'
+ #Always remember me
+ always_remember_me: true
#Set role hierarchy
role_hierarchy:
ROLE_SENIOR: [ 'ROLE_USER', 'ROLE_GUEST', 'ROLE_REGULAR' ]
ROLE_ADMIN: [ 'ROLE_USER', 'ROLE_GUEST', 'ROLE_REGULAR', 'ROLE_SENIOR' ]
-##Framework configuration
-#XXX: don't use that shit, it breaks assets._default_package url generation
-#framework:
-# #Assets configuration
-# 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'
+#Framework configuration
+framework:
+ cache:
+ default_memcached_provider: 'memcached://localhost:11211'
+ pools:
+ air.cache:
+ adapter: 'cache.adapter.memcached'
+ user.cache:
+ adapter: 'cache.adapter.memcached'
+ default_locale: '%rapsys_air.locale%'
+ #error_controller: 'Rapsys\AirBundle\Controller\ErrorController::show'
+ translator:
+ fallbacks: '%rapsys_air.locales%'
+ session:
+ enabled: true
+ handler_id: ~
+ storage_factory_id: 'session.storage.factory.native'
+ cookie_secure: 'auto'
+ cookie_samesite: 'lax'
+ disallow_search_engine_index: false
+ mailer:
+ headers:
+ X-Originating-IP: '%env(string:REMOTE_ADDR)%'
+ secret: '%env(string:APP_SECRET)%'
+ validation:
+ email_validation_mode: 'html5'
#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 application controller
+ Rapsys\AirBundle\Controller\ApplicationController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register calendar controller
+ Rapsys\AirBundle\Controller\CalendarController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
#Register default controller
Rapsys\AirBundle\Controller\DefaultController:
- arguments: [ '@service_container', '@translator', '@router' ]
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register dance controller
+ Rapsys\AirBundle\Controller\DanceController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
tags: [ 'controller.service_arguments' ]
#Register location controller
Rapsys\AirBundle\Controller\LocationController:
- arguments: [ '@service_container', '@translator', '@router' ]
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register user controller
+ Rapsys\AirBundle\Controller\UserController:
+ arguments: [ '@user.cache', '@security.authorization_checker', '@service_container', '@doctrine', '@form.factory', '@security.user_password_hasher', '@logger', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register session controller
+ Rapsys\AirBundle\Controller\SessionController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register snippet controller
+ Rapsys\AirBundle\Controller\SnippetController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register error controller
+ Rapsys\AirBundle\Controller\ErrorController:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
+ #arguments: [ '@service_container', '@router', '@translator' ]
tags: [ 'controller.service_arguments' ]
#Register access denied handler
- Rapsys\AirBundle\Security\AccessDeniedHandler:
- arguments: [ '@service_container', '@translator', '@twig' ]
+ Rapsys\AirBundle\Handler\AccessDeniedHandler:
+ arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_air.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.map_util', '@rapsys_pack.path_package', '@router', '@security.helper', '@rapsys_pack.slugger_util', '@request_stack', '@translator', '@twig' ]
#Register air fixtures
Rapsys\AirBundle\DataFixtures\AirFixtures:
+ arguments: [ '@service_container', '@security.user_password_hasher' ]
tags: [ 'doctrine.fixture.orm' ]
- #Replace assets packages
- assets.packages:
- class: Symfony\Component\Asset\Packages
- arguments: [ '@assets.pack_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\Form\ContactType:
+ arguments: [ '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '@translator' ]
+ tags: [ 'form.type' ]
+ Rapsys\AirBundle\Form\RegisterType:
+ arguments: [ '@doctrine.orm.entity_manager' ]
+ tags: [ 'form.type' ]
+ Rapsys\AirBundle\Command\AttributeCommand:
+ arguments: [ '@doctrine' ]
+ tags: [ 'console.command' ]
+ Rapsys\AirBundle\Command\CalendarCommand:
+ arguments: [ '@doctrine', '@router', '@rapsys_pack.slugger_util', '@translator', 'airlibre', 0, '%kernel.project_dir%/var/cache', '%kernel.default_locale%' ]
+ tags: [ 'console.command' ]
+ Rapsys\AirBundle\Command\Calendar2Command:
+ arguments: [ '@doctrine', '@router', '@rapsys_pack.slugger_util', '@translator', '%kernel.default_locale%', '%env(string:GOOGLE_PROJECT)', '%env(string:GOOGLE_CLIENT)', '%env(string:GOOGLE_SECRET)' ]
+ tags: [ 'console.command' ]
+ Rapsys\AirBundle\Command\RekeyCommand:
+ arguments: [ '@doctrine' ]
+ tags: [ 'console.command' ]
+ Rapsys\AirBundle\Command\WeatherCommand:
+ arguments: [ '@doctrine', '@filesystem' ]
+ tags: [ 'console.command' ]
+ Rapsys\AirBundle\Factory:
+ arguments: [ '@request_stack', '@router', '@rapsys_pack.slugger_util', '@translator', '%kernel.default_locale%', '%rapsys_air.languages%' ]
+ Rapsys\UserBundle\Factory:
+ arguments: [ '@request_stack', '@router', '@rapsys_pack.slugger_util', '@translator', '%kernel.default_locale%', '%rapsys_air.languages%' ]
+ #Register facebook util service
+ rapsys_air.facebook_util:
+ class: 'Rapsys\PackBundle\Util\FacebookUtil'
+ arguments: [ '@router', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%', 'facebook', '%rapsys_air.path%/png/facebook.png', { irishgrover: '%rapsys_air.path%/ttf/irishgrover.v10.ttf', labelleaurore: '%rapsys_air.path%/ttf/labelleaurore.v10.ttf', dejavusans: '%rapsys_air.path%/ttf/dejavusans.2.37.ttf', droidsans: '%rapsys_air.path%/ttf/droidsans.regular.ttf' } ]
+ public: true
+ #Register security password_hasher_factory as public
+ #XXX: required for command `php bin/console doctrine:`
+ security.password_hasher_factory:
+ class: 'Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactory'
+ arguments: [ { 'Rapsys\AirBundle\Entity\User': { class: 'Symfony\Component\PasswordHasher\Hasher\NativePasswordHasher', arguments: [ ~, ~, ~, '2y'] } } ]
+ public: true
+ #Register facebook event subscriber
+ Rapsys\PackBundle\Subscriber\FacebookSubscriber:
+ arguments: [ '@router', '%rapsys_air.locales%' ]
+ tags: [ 'kernel.event_subscriber' ]
#Twig Configuration
twig:
-# #Enforce debug
-# debug: true
-# auto_reload: ~
-# cache: false
+ #Enforce debug
+ #auto_reload: ~
+ debug: '%kernel.debug%'
+ #strict_variables: '%kernel.debug%'
+
+ #Disable cache
+ #XXX: enable forced regeneration of css and js at each page load
+ 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