Part-DB-server/config/services.yaml
Marcel Diegelmann cbfe1d4cc8 Füge Validierung für zyklische Baugruppenreferenzen hinzu
Eine neue Validierung wurde implementiert, um zyklische Referenzen in Baugruppen zu erkennen. Entsprechende Fehlertexte wurden in allen unterstützten Sprachen hinzugefügt. Zudem wurde der Validator in die Entität AssemblyBOMEntry integriert.
2025-09-30 16:08:52 +02:00

306 lines
13 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%'
_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/'
# 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\Services\Attachments\AttachmentSubmitHandler:
arguments:
$mimeTypes: '@mime_types'
####################################################################################################################
# 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 }
###################################################################################################################
# User system
####################################################################################################################
App\Form\UserSettingsType:
arguments:
$demo_mode: '%partdb.demo_mode%'
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\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%'
App\Form\AdminPages\AssemblyAdminForm:
arguments:
$useAssemblyIpnPlaceholder: '%partdb.create_assembly_use_ipn_placeholder_in_name%'
App\Validator\Constraints\AssemblySystem\AssemblyCycleValidator:
tags: [ 'validator.constraint_validator' ]
####################################################################################################################
# Table settings
####################################################################################################################
App\DataTables\AssemblyDataTable:
arguments:
$visible_columns: '%partdb.table.assemblies.default_columns%'
App\DataTables\AssemblyBomEntriesDataTable:
arguments:
$visible_columns: '%partdb.table.assemblies_bom.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:
$dataSourceSynonyms: '%partdb.data_sources.synonyms%'
App\Services\Trees\ToolsTreeBuilder:
arguments:
$dataSourceSynonyms: '%partdb.data_sources.synonyms%'
####################################################################################################################
# Twig Extensions
####################################################################################################################
App\Twig\DataSourceNameExtension:
arguments:
$dataSourceSynonyms: '%partdb.data_sources.synonyms%'
tags: [ 'twig.extension' ]
####################################################################################################################
# Part info provider system
####################################################################################################################
App\Services\InfoProviderSystem\ProviderRegistry:
arguments:
$providers: !tagged_iterator 'app.info_provider'
####################################################################################################################
# API system
####################################################################################################################
App\State\PartDBInfoProvider:
arguments:
$default_uri: '%partdb.default_uri%'
####################################################################################################################
# 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:
$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\Doctrine\Middleware\MySQLSSLConnectionMiddlewareWrapper:
arguments:
$enabled: '%env(bool:DATABASE_MYSQL_USE_SSL_CA)%'
$verify: '%env(bool:DATABASE_MYSQL_SSL_VERIFY_CERT)%'
####################################################################################################################
# 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' }