|
12 | 12 | use MinVWS\AuditLoggerBundle\Loggers\DoctrineLogger; |
13 | 13 | use MinVWS\AuditLoggerBundle\Loggers\RabbitmqLogger; |
14 | 14 | use OldSound\RabbitMqBundle\OldSoundRabbitMqBundle; |
| 15 | +use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; |
15 | 16 | use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator; |
16 | 17 | use Symfony\Component\DependencyInjection\ContainerBuilder; |
17 | 18 | use Symfony\Component\DependencyInjection\Definition; |
18 | 19 | use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; |
19 | 20 | use Symfony\Component\DependencyInjection\Reference; |
20 | 21 | use Symfony\Component\HttpKernel\Bundle\AbstractBundle; |
21 | 22 |
|
| 23 | +use function realpath; |
| 24 | + |
| 25 | +/** |
| 26 | + * @phpstan-type ConfigEncryptionArray array{public_key: string, private_key: string} |
| 27 | + * @phpstan-type ConfigLoggersArray array{ |
| 28 | + * enabled: bool, |
| 29 | + * encrypted: bool, |
| 30 | + * log_pii: bool, |
| 31 | + * } |
| 32 | + * @phpstan-type ConfigFileLoggersArray array{ |
| 33 | + * enabled: bool, |
| 34 | + * encrypted: bool, |
| 35 | + * log_pii: bool, |
| 36 | + * path: string, |
| 37 | + * } |
| 38 | + * @phpstan-type ConfigRabbitMqLoggersArray array{ |
| 39 | + * enabled: bool, |
| 40 | + * encrypted: bool, |
| 41 | + * log_pii: bool, |
| 42 | + * path: string, |
| 43 | + * producer_service: string, |
| 44 | + * routing_key: string, |
| 45 | + * additional_events: array<string,string>, |
| 46 | + * } |
| 47 | + * @phpstan-type ConfigArray array{ |
| 48 | + * encryption: ConfigEncryptionArray, |
| 49 | + * loggers: array{ |
| 50 | + * psr_logger?: ConfigLoggersArray, |
| 51 | + * doctrine_logger?: ConfigLoggersArray, |
| 52 | + * file_logger?: ConfigFileLoggersArray, |
| 53 | + * rabbitmq_logger?: ConfigRabbitMqLoggersArray, |
| 54 | + * } |
| 55 | + * } |
| 56 | + */ |
22 | 57 | class AuditLoggerBundle extends AbstractBundle |
23 | 58 | { |
24 | 59 | public function configure(DefinitionConfigurator $definition): void |
25 | 60 | { |
26 | | - $definition->rootNode() |
| 61 | + $arrayDef = $definition->rootNode(); |
| 62 | + |
| 63 | + assert($arrayDef instanceof ArrayNodeDefinition); |
| 64 | + |
| 65 | + $arrayDef |
27 | 66 | ->children() |
28 | 67 | ->arrayNode('encryption') |
29 | 68 | ->children() |
@@ -76,6 +115,9 @@ public function configure(DefinitionConfigurator $definition): void |
76 | 115 | ->end(); |
77 | 116 | } |
78 | 117 |
|
| 118 | + /** |
| 119 | + * @phpstan-param ConfigArray $config |
| 120 | + */ |
79 | 121 | public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void |
80 | 122 | { |
81 | 123 | $container->import('Resources/config/services.yml'); |
@@ -159,11 +201,14 @@ public function build(ContainerBuilder $container): void |
159 | 201 | { |
160 | 202 | parent::build($container); |
161 | 203 |
|
162 | | - $mappings = [ |
163 | | - realpath(__DIR__ . '/Resources/config/doctrine') => 'MinVWS\AuditLoggerBundle\Entity', |
164 | | - ]; |
| 204 | + $path = realpath(__DIR__ . '/Entity'); |
| 205 | + assert($path !== false); |
165 | 206 |
|
166 | | - $container->addCompilerPass(DoctrineOrmMappingsPass::createYamlMappingDriver($mappings)); |
| 207 | + $container->addCompilerPass(DoctrineOrmMappingsPass::createAttributeMappingDriver( |
| 208 | + ['MinVWS\AuditLoggerBundle\Entity'], |
| 209 | + [$path], |
| 210 | + reportFieldsWhereDeclared: true, |
| 211 | + )); |
167 | 212 | } |
168 | 213 |
|
169 | 214 | public function getAlias(): string |
|
0 commit comments