Skip to content

Commit 4ad8796

Browse files
authored
Merge pull request #10 from curiosity26/develop
Allow for more complex criteria in the query builder
2 parents 8649de8 + 2ac1d16 commit 4ad8796

File tree

9 files changed

+485
-71
lines changed

9 files changed

+485
-71
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: alex.boyce
5+
* Date: 6/10/19
6+
* Time: 4:58 PM
7+
*/
8+
9+
namespace Curiosity26\AclHelperBundle\DependencyInjection\Configuration;
10+
11+
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
12+
use Symfony\Component\Config\Definition\ConfigurationInterface;
13+
14+
class Configuration implements ConfigurationInterface
15+
{
16+
public function getConfigTreeBuilder()
17+
{
18+
$tree = new TreeBuilder();
19+
$tree->root('curiosity26_acl_helper')
20+
->children()
21+
->scalarNode('allowClassAclsDefault')
22+
->cannotBeEmpty()
23+
->defaultValue(true)
24+
->validate()
25+
->ifNotInArray([true, false])
26+
->thenInvalid('allowClassAclsDefault must be a boolean value')
27+
->end()
28+
->end()
29+
->end();
30+
31+
return $tree;
32+
}
33+
34+
}

DependencyInjection/Curiosity26AclHelperExtension.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
namespace Curiosity26\AclHelperBundle\DependencyInjection;
1010

11+
use Curiosity26\AclHelperBundle\DependencyInjection\Configuration\Configuration;
1112
use Curiosity26\AclHelperBundle\Doctrine\DQL\CastAsInt;
13+
use Curiosity26\AclHelperBundle\Helper\AclHelper;
1214
use Symfony\Component\Config\FileLocator;
1315
use Symfony\Component\DependencyInjection\ContainerBuilder;
1416
use Symfony\Component\DependencyInjection\Extension\Extension;
@@ -27,6 +29,13 @@ public function load(array $configs, ContainerBuilder $container)
2729
{
2830
$loader = new YamlFileLoader($container, new FileLocator([__DIR__.'/../Resources/config/']));
2931
$loader->load('services.yaml');
32+
33+
$config = $this->processConfiguration(new Configuration(), $configs);
34+
35+
if ($container->hasDefinition(AclHelper::class)) {
36+
$def = $container->getDefinition(AclHelper::class);
37+
$def->setArgument('$allowClassAclsDefault', $config['allowClassAclsDefault']);
38+
}
3039
}
3140

3241
public function prepend(ContainerBuilder $container)

Helper/AclHelper.php

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@
99
namespace Curiosity26\AclHelperBundle\Helper;
1010

1111
use Curiosity26\AclHelperBundle\QueryBuilder\AclHelperQueryBuilder;
12+
use Psr\Log\LoggerAwareInterface;
13+
use Psr\Log\LoggerAwareTrait;
1214
use Symfony\Bridge\Doctrine\RegistryInterface;
1315
use Symfony\Component\Security\Acl\Model\MutableAclProviderInterface;
1416

15-
class AclHelper
17+
class AclHelper implements LoggerAwareInterface
1618
{
19+
use LoggerAwareTrait;
20+
1721
/**
1822
* @var AclHelperQueryBuilder
1923
*/
@@ -29,14 +33,21 @@ class AclHelper
2933
*/
3034
private $aclProvider;
3135

36+
/**
37+
* @var bool
38+
*/
39+
private $allowClassAclsDefault = true;
40+
3241
public function __construct(
3342
RegistryInterface $registry,
3443
AclHelperQueryBuilder $queryBuilder,
35-
MutableAclProviderInterface $provider
44+
MutableAclProviderInterface $provider,
45+
bool $allowClassAclsDefault = true
3646
) {
37-
$this->registry = $registry;
38-
$this->queryBuilder = $queryBuilder;
39-
$this->aclProvider = $provider;
47+
$this->registry = $registry;
48+
$this->queryBuilder = $queryBuilder;
49+
$this->aclProvider = $provider;
50+
$this->allowClassAclsDefault = $allowClassAclsDefault;
4051
}
4152

4253
/**
@@ -48,7 +59,13 @@ public function createAgent(string $className): AclHelperAgent
4859
{
4960
$manager = $this->registry->getManagerForClass($className);
5061

51-
return new AclHelperAgent($className, $manager, $this->queryBuilder);
62+
return new AclHelperAgent(
63+
$className,
64+
$manager,
65+
$this->queryBuilder,
66+
$this->allowClassAclsDefault,
67+
$this->logger
68+
);
5269
}
5370

5471
/**

0 commit comments

Comments
 (0)