Skip to content

Commit

Permalink
Add Symfony security components as an optional dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
pierredup committed Oct 5, 2018
1 parent dabc94f commit cc16ee1
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
6 changes: 4 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
"symfony/property-access": "^3.0 || ^4.0"
},
"suggest": {
"symfony/framework-bundle": "For Symfony integration"
"symfony/framework-bundle": "For Symfony integration",
"symfony/security": "To load security functions for expressions"
},
"require-dev": {
"phpunit/phpunit": "^7.3",
"symfony/framework-bundle": "^3,0 || ^4.0"
"symfony/framework-bundle": "^3,0 || ^4.0",
"symfony/security": "^3,0 || ^4.0"
},
"autoload": {
"psr-4": {
Expand Down
15 changes: 11 additions & 4 deletions src/Symfony/DependencyInjection/RulerExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use Symfony\Component\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Exception;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
Expand All @@ -34,14 +35,17 @@ public function load(array $configs, ContainerBuilder $container): void
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);

$this->processRules($config['rules'], $container);
try {
$this->processRules($config['rules'], $container);
} catch (Exception\BadMethodCallException | Exception\InvalidArgumentException $e) {
}
}

/**
* @param array $rules
* @param ContainerBuilder $container
*
* @throws DependencyInjection\Exception\BadMethodCallException|DependencyInjection\Exception\InvalidArgumentException
* @throws Exception\InvalidArgumentException|Exception\BadMethodCallException
*/
private function processRules(array $rules, ContainerBuilder $container): void
{
Expand All @@ -62,7 +66,7 @@ private function processRules(array $rules, ContainerBuilder $container): void
* @param array $rules
*
* @return Definition
* @throws DependencyInjection\Exception\InvalidArgumentException
* @throws Exception\InvalidArgumentException
*/
private function getRuleDefinition(array $rules): Definition
{
Expand Down Expand Up @@ -103,9 +107,12 @@ private function getExpressionLanguage(): Definition
{
$providers = [
new Definition(DependencyInjection\ExpressionLanguageProvider::class),
new Definition(Security\ExpressionLanguageProvider::class),
];

if (class_exists(Security\ExpressionLanguageProvider::class)) {
$providers[] = new Definition(Security\ExpressionLanguageProvider::class);
}

return new Definition(ExpressionLanguage::class, [null, $providers]);
}
}

0 comments on commit cc16ee1

Please sign in to comment.