| 1 |  |  | <?php | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | namespace DH\AuditorBundle\DependencyInjection; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | use Symfony\Component\Config\Definition\Builder\TreeBuilder; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | use Symfony\Component\Config\Definition\ConfigurationInterface; | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 8 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 9 |  |  | class Configuration implements ConfigurationInterface | 
            
                                                                        
                            
            
                                    
            
            
                | 10 |  |  | { | 
            
                                                                        
                            
            
                                    
            
            
                | 11 |  |  |     /** | 
            
                                                                        
                            
            
                                    
            
            
                | 12 |  |  |      * Generates the configuration tree builder. | 
            
                                                                        
                            
            
                                    
            
            
                | 13 |  |  |      */ | 
            
                                                                        
                            
            
                                    
            
            
                | 14 |  |  |     public function getConfigTreeBuilder(): TreeBuilder | 
            
                                                                        
                            
            
                                    
            
            
                | 15 |  |  |     { | 
            
                                                                        
                            
            
                                    
            
            
                | 16 |  |  |         $treeBuilder = new TreeBuilder('dh_auditor'); | 
            
                                                                        
                            
            
                                    
            
            
                | 17 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 18 |  |  |         $this->getRootNode($treeBuilder, 'dh_auditor') | 
            
                                                                        
                            
            
                                    
            
            
                | 19 |  |  |             ->children() | 
            
                                                                        
                            
            
                                    
            
            
                | 20 |  |  |                 ->booleanNode('enabled') | 
            
                                                                        
                            
            
                                    
            
            
                | 21 |  |  |                     ->defaultTrue() | 
            
                                                                        
                            
            
                                    
            
            
                | 22 |  |  |                 ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 23 |  |  |                 ->scalarNode('timezone') | 
            
                                                                        
                            
            
                                    
            
            
                | 24 |  |  |                     ->defaultValue('UTC') | 
            
                                                                        
                            
            
                                    
            
            
                | 25 |  |  |                 ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 26 |  |  |                 ->scalarNode('user_provider') | 
            
                                                                        
                            
            
                                    
            
            
                | 27 |  |  |                     ->defaultValue('dh_auditor.user_provider') | 
            
                                                                        
                            
            
                                    
            
            
                | 28 |  |  |                 ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 29 |  |  |                 ->scalarNode('security_provider') | 
            
                                                                        
                            
            
                                    
            
            
                | 30 |  |  |                     ->defaultValue('dh_auditor.security_provider') | 
            
                                                                        
                            
            
                                    
            
            
                | 31 |  |  |                 ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 32 |  |  |                 ->scalarNode('role_checker') | 
            
                                                                        
                            
            
                                    
            
            
                | 33 |  |  |                     ->defaultValue('dh_auditor.role_checker') | 
            
                                                                        
                            
            
                                    
            
            
                | 34 |  |  |                 ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 35 |  |  |                 ->append($this->getProvidersNode()) | 
            
                                                                        
                            
            
                                    
            
            
                | 36 |  |  |             ->end() | 
            
                                                                        
                            
            
                                    
            
            
                | 37 |  |  |         ; | 
            
                                                                        
                            
            
                                    
            
            
                | 38 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 39 |  |  |         return $treeBuilder; | 
            
                                                                        
                            
            
                                    
            
            
                | 40 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 41 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 42 |  |  |     /** | 
            
                                                                        
                            
            
                                    
            
            
                | 43 |  |  |      * Proxy to get root node for Symfony < 4.2. | 
            
                                                                        
                            
            
                                    
            
            
                | 44 |  |  |      */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |     protected function getRootNode(TreeBuilder $treeBuilder, string $name): ArrayNodeDefinition | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |     { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  |         if (method_exists($treeBuilder, 'getRootNode')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  |             return $treeBuilder->getRootNode(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |  | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 51 |  |  |         return $treeBuilder->root($name); | 
            
                                                                        
                            
            
                                    
            
            
                | 52 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 53 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  |     private function getProvidersNode(): ArrayNodeDefinition | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 |  |  |     { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  |         $treeBuilder = new TreeBuilder('providers'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  |         return $this->getRootNode($treeBuilder, 'providers') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  |             ->requiresAtLeastOneElement() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  |             ->useAttributeAsKey('name') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  |             ->variablePrototype() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  |                 ->validate() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  |                     ->ifEmpty() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  |                     ->thenInvalid('Invalid provider configuration %s') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  |                 ->end() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  |             ->end() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  |             ->validate() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  |                 ->always() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  |                 ->then(static function ($v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  |                     if (!\array_key_exists('doctrine', $v)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  |                         $v['doctrine'] = []; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 |  |  |                     // "table_prefix" is empty by default. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 |  |  |                     if (!\array_key_exists('table_prefix', $v['doctrine']) || !\is_string($v['doctrine']['table_prefix'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 |  |  |                         $v['doctrine']['table_prefix'] = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  |                     // "table_suffix" is "_audit" by default. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 |  |  |                     if (!\array_key_exists('table_suffix', $v['doctrine']) || !\is_string($v['doctrine']['table_suffix'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 |  |  |                         $v['doctrine']['table_suffix'] = '_audit'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 84 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 |  |  |                     // "entities" are "enabled" by default. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 |  |  |                     if (\array_key_exists('entities', $v['doctrine']) && \is_array($v['doctrine']['entities'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 |  |  |                         foreach ($v['doctrine']['entities'] as $entity => $options) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 |  |  |                             if (null === $options || !\array_key_exists('enabled', $options)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 |  |  |                                 $v['doctrine']['entities'][$entity]['enabled'] = true; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 |  |  |                             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 |  |  |                         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 |  |  |                     // "doctrine.orm.default_entity_manager" is the default "storage_services" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 |  |  |                     if (\array_key_exists('storage_services', $v['doctrine']) && \is_string($v['doctrine']['storage_services'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 |  |  |                         $v['doctrine']['storage_services'] = [$v['doctrine']['storage_services']]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 |  |  |                     } elseif (!\array_key_exists('storage_services', $v['doctrine']) || !\is_array($v['doctrine']['storage_services'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 |  |  |                         $v['doctrine']['storage_services'] = ['doctrine.orm.default_entity_manager']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 100 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 101 |  |  |                     // "doctrine.orm.default_entity_manager" is the default "auditing_services" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 102 |  |  |                     if (\array_key_exists('auditing_services', $v['doctrine']) && \is_string($v['doctrine']['auditing_services'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 103 |  |  |                         $v['doctrine']['auditing_services'] = [$v['doctrine']['auditing_services']]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 104 |  |  |                     } elseif (!\array_key_exists('auditing_services', $v['doctrine']) || !\is_array($v['doctrine']['auditing_services'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 105 |  |  |                         $v['doctrine']['auditing_services'] = ['doctrine.orm.default_entity_manager']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 106 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 107 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 108 |  |  |                     // "viewer" is disabled by default | 
            
                                                                                                            
                            
            
                                    
            
            
                | 109 |  |  |                     if (!\array_key_exists('viewer', $v['doctrine']) || !\is_bool($v['doctrine']['viewer'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 110 |  |  |                         $v['doctrine']['viewer'] = false; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 111 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 112 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 113 |  |  |                     // "storage_mapper" is null by default | 
            
                                                                                                            
                            
            
                                    
            
            
                | 114 |  |  |                     if (!\array_key_exists('storage_mapper', $v['doctrine']) || !\is_string($v['doctrine']['storage_mapper'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 115 |  |  |                         $v['doctrine']['storage_mapper'] = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 116 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 117 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 118 |  |  |                     return $v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 119 |  |  |                 }) | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 120 |  |  |             ->end() | 
            
                                                                        
                                                                
            
                                    
            
            
                | 121 |  |  |         ; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 122 |  |  |     } | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 123 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 124 |  |  |  |