mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-08-04 02:05:16 +02:00
For some very very weird reasoning this cause issues with the ObjectNormalizer, which does not get an an serializer injected anymore. When the EventLoggerSubscriber is a doctrine subscriber it seems that the serializer service is initialized (as its requested in constructor but not used) and later injected into the object normalizer. When its an listener, this does not work anymore.
400 lines
No EOL
17 KiB
YAML
400 lines
No EOL
17 KiB
YAML
# This file is the entry point to configure your own services.
|
|
# Files in the packages/ subdirectory configure your dependencies.
|
|
|
|
# Put parameters here that don't need to change on each machine where the app is deployed
|
|
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
|
|
|
|
imports:
|
|
- { resource: parameters.yaml }
|
|
|
|
services:
|
|
# default configuration for services in *this* file
|
|
_defaults:
|
|
autowire: true # Automatically injects dependencies in your services.
|
|
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
|
bind:
|
|
bool $demo_mode: '%partdb.demo_mode%'
|
|
bool $gdpr_compliance: '%partdb.gdpr_compliance%'
|
|
bool $kernel_debug_enabled: '%kernel.debug%'
|
|
string $kernel_cache_dir: '%kernel.cache_dir%'
|
|
string $partdb_title: '%partdb.title%'
|
|
string $base_currency: '%partdb.default_currency%'
|
|
|
|
_instanceof:
|
|
App\Services\LabelSystem\PlaceholderProviders\PlaceholderProviderInterface:
|
|
tags: ['app.label_placeholder_provider']
|
|
|
|
App\Services\InfoProviderSystem\Providers\InfoProviderInterface:
|
|
tags: ['app.info_provider']
|
|
|
|
# makes classes in src/ available to be used as services
|
|
# this creates a service per class whose id is the fully-qualified class name
|
|
App\:
|
|
resource: '../src/'
|
|
exclude:
|
|
- '../src/DependencyInjection/'
|
|
- '../src/Entity/'
|
|
- '../src/Kernel.php'
|
|
|
|
# controllers are imported separately to make sure services can be injected
|
|
# as action arguments even if you don't extend any base controller class
|
|
App\Controller\:
|
|
resource: '../src/Controller'
|
|
tags: ['controller.service_arguments']
|
|
|
|
####################################################################################################################
|
|
# Alias definitions
|
|
####################################################################################################################
|
|
Swap\Swap:
|
|
alias: 'florianv_swap.swap'
|
|
|
|
Doctrine\Migrations\DependencyFactory:
|
|
alias: 'doctrine.migrations.dependency_factory'
|
|
|
|
|
|
####################################################################################################################
|
|
# Email
|
|
####################################################################################################################
|
|
|
|
App\EventSubscriber\SetMailFromSubscriber:
|
|
tags: ['kernel.event_subscriber']
|
|
arguments:
|
|
$email: '%partdb.mail.sender_email%'
|
|
$name: '%partdb.mail.sender_name%'
|
|
|
|
####################################################################################################################
|
|
# Log System
|
|
####################################################################################################################
|
|
|
|
App\Services\LogSystem\EventLogger:
|
|
arguments:
|
|
# By default only log events which has minimum info level (debug levels are not logged)
|
|
# 7 is lowest level (debug), 0 highest (emergency
|
|
$minimum_log_level: 6
|
|
# Event classes specified here are not saved to DB
|
|
$blacklist: []
|
|
# Only the event classes specified here are saved to DB (set to []) to log all events
|
|
$whitelist: []
|
|
|
|
App\EventSubscriber\LogSystem\EventLoggerSubscriber:
|
|
arguments:
|
|
$save_changed_fields: '%env(bool:HISTORY_SAVE_CHANGED_FIELDS)%'
|
|
$save_changed_data: '%env(bool:HISTORY_SAVE_CHANGED_DATA)%'
|
|
$save_removed_data: '%env(bool:HISTORY_SAVE_REMOVED_DATA)%'
|
|
$save_new_data: '%env(bool:HISTORY_SAVE_NEW_DATA)%'
|
|
tags:
|
|
- { name: 'doctrine.event_subscriber' }
|
|
|
|
App\EventSubscriber\LogSystem\LogDBMigrationSubscriber:
|
|
tags:
|
|
- { name: 'doctrine.event_subscriber' }
|
|
|
|
App\Form\AttachmentFormType:
|
|
arguments:
|
|
$allow_attachments_download: '%partdb.attachments.allow_downloads%'
|
|
$max_file_size: '%partdb.attachments.max_file_size%'
|
|
$download_by_default: '%partdb.attachments.download_by_default%'
|
|
|
|
App\Services\Attachments\AttachmentSubmitHandler:
|
|
arguments:
|
|
$allow_attachments_downloads: '%partdb.attachments.allow_downloads%'
|
|
$mimeTypes: '@mime_types'
|
|
$max_upload_size: '%partdb.attachments.max_file_size%'
|
|
|
|
App\Services\LogSystem\EventCommentNeededHelper:
|
|
arguments:
|
|
$enforce_change_comments_for: '%partdb.enforce_change_comments_for%'
|
|
|
|
####################################################################################################################
|
|
# Attachment system
|
|
####################################################################################################################
|
|
|
|
Liip\ImagineBundle\Service\FilterService:
|
|
alias: 'liip_imagine.service.filter'
|
|
|
|
App\EntityListeners\AttachmentDeleteListener:
|
|
tags:
|
|
- name: doctrine.orm.entity_listener
|
|
|
|
App\Services\Attachments\AttachmentPathResolver:
|
|
arguments:
|
|
$project_dir: '%kernel.project_dir%'
|
|
$media_path: '%partdb.attachments.dir.media%'
|
|
$secure_path: '%partdb.attachments.dir.secure%'
|
|
$footprints_path: 'public/img/footprints'
|
|
$models_path: null
|
|
|
|
App\Services\Attachments\FileTypeFilterTools:
|
|
arguments:
|
|
$mimeTypes: '@mime_types'
|
|
|
|
####################################################################################################################
|
|
# Security
|
|
####################################################################################################################
|
|
|
|
saml_user_factory:
|
|
alias: App\Security\SamlUserFactory
|
|
public: true
|
|
|
|
App\Security\SamlUserFactory:
|
|
arguments:
|
|
$saml_role_mapping: '%env(json:SAML_ROLE_MAPPING)%'
|
|
$update_group_on_login: '%env(bool:SAML_UPDATE_GROUP_ON_LOGIN)%'
|
|
|
|
|
|
security.access_token_extractor.header.token:
|
|
class: Symfony\Component\Security\Http\AccessToken\HeaderAccessTokenExtractor
|
|
arguments:
|
|
$tokenType: 'Token'
|
|
|
|
security.access_token_extractor.main:
|
|
class: Symfony\Component\Security\Http\AccessToken\ChainAccessTokenExtractor
|
|
arguments:
|
|
$accessTokenExtractors:
|
|
- '@security.access_token_extractor.header'
|
|
- '@security.access_token_extractor.header.token'
|
|
|
|
####################################################################################################################
|
|
# Cache
|
|
####################################################################################################################
|
|
|
|
App\EntityListeners\TreeCacheInvalidationListener:
|
|
tags:
|
|
- { name: doctrine.orm.entity_listener }
|
|
|
|
####################################################################################################################
|
|
# Price system
|
|
####################################################################################################################
|
|
App\Command\Currencies\UpdateExchangeRatesCommand:
|
|
arguments:
|
|
$base_current: '%partdb.default_currency%'
|
|
|
|
App\Form\Type\CurrencyEntityType:
|
|
arguments:
|
|
$base_currency: '%partdb.default_currency%'
|
|
|
|
App\Services\Parts\PricedetailHelper:
|
|
arguments:
|
|
$base_currency: '%partdb.default_currency%'
|
|
|
|
App\Services\Formatters\MoneyFormatter:
|
|
arguments:
|
|
$base_currency: '%partdb.default_currency%'
|
|
|
|
App\Services\Tools\ExchangeRateUpdater:
|
|
arguments:
|
|
$base_currency: '%partdb.default_currency%'
|
|
|
|
###################################################################################################################
|
|
# User system
|
|
####################################################################################################################
|
|
App\Form\UserSettingsType:
|
|
arguments:
|
|
$demo_mode: '%partdb.demo_mode%'
|
|
|
|
App\EventSubscriber\UserSystem\SetUserTimezoneSubscriber:
|
|
arguments:
|
|
$default_timezone: '%partdb.timezone%'
|
|
|
|
App\Controller\SecurityController:
|
|
arguments:
|
|
$allow_email_pw_reset: '%partdb.users.email_pw_reset%'
|
|
|
|
App\Services\UserSystem\TFA\BackupCodeGenerator:
|
|
arguments:
|
|
$code_length: 8
|
|
$code_count: 15
|
|
|
|
App\Services\TranslationExtractor\PermissionExtractor:
|
|
tags:
|
|
- { name: 'translation.extractor', alias: 'permissionExtractor'}
|
|
|
|
App\Services\UserSystem\UserAvatarHelper:
|
|
arguments:
|
|
$use_gravatar: '%partdb.users.use_gravatar%'
|
|
|
|
App\Form\Type\ThemeChoiceType:
|
|
arguments:
|
|
$available_themes: '%partdb.available_themes%'
|
|
|
|
App\Validator\Constraints\ValidThemeValidator:
|
|
arguments:
|
|
$available_themes: '%partdb.available_themes%'
|
|
|
|
App\Command\User\ConvertToSAMLUserCommand:
|
|
arguments:
|
|
$saml_enabled: '%partdb.saml.enabled%'
|
|
|
|
####################################################################################################################
|
|
# Table settings
|
|
####################################################################################################################
|
|
App\DataTables\PartsDataTable:
|
|
arguments:
|
|
$visible_columns: '%partdb.table.parts.default_columns%'
|
|
|
|
App\DataTables\Helpers\ColumnSortHelper:
|
|
shared: false # Service has a state so not share it between different tables
|
|
|
|
####################################################################################################################
|
|
# Label system
|
|
####################################################################################################################
|
|
App\Services\LabelSystem\LabelTextReplacer:
|
|
arguments:
|
|
$providers: !tagged_iterator 'app.label_placeholder_provider'
|
|
|
|
# PartLotProvider must be invoked before all other providers, so it can override %%NAME%% placeholder
|
|
App\Services\LabelSystem\PlaceholderProviders\PartLotProvider:
|
|
tags:
|
|
- { name: 'app.label_placeholder_provider', priority: 10}
|
|
|
|
App\Services\LabelSystem\DompdfFactory:
|
|
arguments:
|
|
$fontDirectory: '%kernel.project_dir%/var/dompdf/fonts/'
|
|
$tmpDirectory: '%kernel.project_dir%/var/dompdf/tmp/'
|
|
|
|
####################################################################################################################
|
|
# Trees
|
|
####################################################################################################################
|
|
App\Services\Trees\TreeViewGenerator:
|
|
arguments:
|
|
$rootNodeExpandedByDefault: '%partdb.sidebar.root_expanded%'
|
|
$rootNodeEnabled: '%partdb.sidebar.root_node_enable%'
|
|
|
|
####################################################################################################################
|
|
# Part info provider system
|
|
####################################################################################################################
|
|
App\Services\InfoProviderSystem\ProviderRegistry:
|
|
arguments:
|
|
$providers: !tagged_iterator 'app.info_provider'
|
|
|
|
App\Services\InfoProviderSystem\Providers\Element14Provider:
|
|
arguments:
|
|
$api_key: '%env(string:PROVIDER_ELEMENT14_KEY)%'
|
|
$store_id: '%env(string:PROVIDER_ELEMENT14_STORE_ID)%'
|
|
|
|
App\Services\InfoProviderSystem\Providers\DigikeyProvider:
|
|
arguments:
|
|
$clientId: '%env(string:PROVIDER_DIGIKEY_CLIENT_ID)%'
|
|
$currency: '%env(string:PROVIDER_DIGIKEY_CURRENCY)%'
|
|
$language: '%env(string:PROVIDER_DIGIKEY_LANGUAGE)%'
|
|
$country: '%env(string:PROVIDER_DIGIKEY_COUNTRY)%'
|
|
|
|
App\Services\InfoProviderSystem\Providers\TMEClient:
|
|
arguments:
|
|
$secret: '%env(string:PROVIDER_TME_SECRET)%'
|
|
$token: '%env(string:PROVIDER_TME_KEY)%'
|
|
|
|
App\Services\InfoProviderSystem\Providers\TMEProvider:
|
|
arguments:
|
|
$currency: '%env(string:PROVIDER_TME_CURRENCY)%'
|
|
$country: '%env(string:PROVIDER_TME_COUNTRY)%'
|
|
$language: '%env(string:PROVIDER_TME_LANGUAGE)%'
|
|
$get_gross_prices: '%env(bool:PROVIDER_TME_GET_GROSS_PRICES)%'
|
|
|
|
App\Services\InfoProviderSystem\Providers\OctopartProvider:
|
|
arguments:
|
|
$clientId: '&env(string:PROVIDER_OCTOPART_CLIENT_ID)%'
|
|
$secret: '%env(string:PROVIDER_OCTOPART_SECRET)%'
|
|
$country: '%env(string:PROVIDER_OCTOPART_COUNTRY)%'
|
|
$currency: '%env(string:PROVIDER_OCTOPART_CURRENCY)%'
|
|
$search_limit: '%env(int:PROVIDER_OCTOPART_SEARCH_LIMIT)%'
|
|
$onlyAuthorizedSellers: '%env(bool:PROVIDER_OCTOPART_ONLY_AUTHORIZED_SELLERS)%'
|
|
|
|
App\Services\InfoProviderSystem\Providers\MouserProvider:
|
|
arguments:
|
|
$api_key: '%env(string:PROVIDER_MOUSER_KEY)%'
|
|
$language: '%env(string:PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE)%'
|
|
$options: '%env(string:PROVIDER_MOUSER_SEARCH_OPTION)%'
|
|
$search_limit: '%env(int:PROVIDER_MOUSER_SEARCH_LIMIT)%'
|
|
|
|
####################################################################################################################
|
|
# API system
|
|
####################################################################################################################
|
|
App\State\PartDBInfoProvider:
|
|
arguments:
|
|
$default_uri: '%partdb.default_uri%'
|
|
$global_locale: '%partdb.locale%'
|
|
$global_timezone: '%partdb.timezone%'
|
|
|
|
####################################################################################################################
|
|
# EDA system
|
|
####################################################################################################################
|
|
App\Services\EDA\KiCadHelper:
|
|
arguments:
|
|
$category_depth: '%env(int:EDA_KICAD_CATEGORY_DEPTH)%'
|
|
|
|
####################################################################################################################
|
|
# Symfony overrides
|
|
####################################################################################################################
|
|
|
|
# Dont use JSONSerializable Interface,
|
|
serializer.normalizer.json_serializable:
|
|
class: Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer
|
|
tags:
|
|
- {name: serializer.normalizer, priority: -9000}
|
|
|
|
# Disable igbinary serialization for cache even when igbinary is available, as it causes issues with the doctrine
|
|
# proxy objects (see https://github.com/igbinary/igbinary/issues/377 and https://github.com/igbinary/igbinary/issues/273)
|
|
cache.default_marshaller:
|
|
class: Symfony\Component\Cache\Marshaller\DefaultMarshaller
|
|
arguments:
|
|
$useIgbinarySerialize: false
|
|
|
|
|
|
####################################################################################################################
|
|
# Miscellaneous
|
|
####################################################################################################################
|
|
App\Controller\RedirectController:
|
|
arguments:
|
|
$default_locale: '%partdb.locale%'
|
|
$enforce_index_php: '%env(bool:NO_URL_REWRITE_AVAILABLE)%'
|
|
|
|
App\Doctrine\Purger\ResetAutoIncrementPurgerFactory:
|
|
tags:
|
|
- { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' }
|
|
|
|
# We are needing this service inside a migration, where only the container is injected. So we need to define it as public, to access it from the container.
|
|
App\Services\UserSystem\PermissionPresetsHelper:
|
|
public: true
|
|
|
|
App\Command\BackupCommand:
|
|
arguments:
|
|
$project_dir: '%kernel.project_dir%'
|
|
|
|
App\Services\System\UpdateAvailableManager:
|
|
arguments:
|
|
$check_for_updates: '%partdb.check_for_updates%'
|
|
|
|
App\Services\System\BannerHelper:
|
|
arguments:
|
|
$partdb_banner: '%partdb.banner%'
|
|
$project_dir: '%kernel.project_dir%'
|
|
|
|
|
|
####################################################################################################################
|
|
# Monolog
|
|
####################################################################################################################
|
|
# Add various monolog processors to log more information
|
|
Symfony\Bridge\Monolog\Processor\WebProcessor:
|
|
tags:
|
|
- { name: monolog.processor }
|
|
|
|
Symfony\Bridge\Monolog\Processor\ConsoleCommandProcessor:
|
|
tags:
|
|
- { name: monolog.processor }
|
|
|
|
Symfony\Bridge\Monolog\Processor\TokenProcessor:
|
|
autowire: true
|
|
tags:
|
|
- { name: monolog.processor }
|
|
|
|
when@test:
|
|
services:
|
|
# Decorate the doctrine fixtures load command to use our custom purger by default
|
|
doctrine.fixtures_load_command.custom:
|
|
decorates: doctrine.fixtures_load_command
|
|
class: Doctrine\Bundle\FixturesBundle\Command\LoadDataFixturesDoctrineCommand
|
|
arguments:
|
|
- '@doctrine.fixtures.loader'
|
|
- '@doctrine'
|
|
- { default: '@App\Doctrine\Purger\DoNotUsePurgerFactory' } |