Skip to content

Commit

Permalink
Merge pull request #10 from curiosity26/develop
Browse files Browse the repository at this point in the history
Allow for more complex criteria in the query builder
  • Loading branch information
curiosity26 committed Jun 10, 2019
2 parents 8649de8 + 2ac1d16 commit 4ad8796
Show file tree
Hide file tree
Showing 9 changed files with 485 additions and 71 deletions.
34 changes: 34 additions & 0 deletions DependencyInjection/Configuration/Configuration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
/**
* Created by PhpStorm.
* User: alex.boyce
* Date: 6/10/19
* Time: 4:58 PM
*/

namespace Curiosity26\AclHelperBundle\DependencyInjection\Configuration;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$tree = new TreeBuilder();
$tree->root('curiosity26_acl_helper')
->children()
->scalarNode('allowClassAclsDefault')
->cannotBeEmpty()
->defaultValue(true)
->validate()
->ifNotInArray([true, false])
->thenInvalid('allowClassAclsDefault must be a boolean value')
->end()
->end()
->end();

return $tree;
}

}
9 changes: 9 additions & 0 deletions DependencyInjection/Curiosity26AclHelperExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

namespace Curiosity26\AclHelperBundle\DependencyInjection;

use Curiosity26\AclHelperBundle\DependencyInjection\Configuration\Configuration;
use Curiosity26\AclHelperBundle\Doctrine\DQL\CastAsInt;
use Curiosity26\AclHelperBundle\Helper\AclHelper;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
Expand All @@ -27,6 +29,13 @@ public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator([__DIR__.'/../Resources/config/']));
$loader->load('services.yaml');

$config = $this->processConfiguration(new Configuration(), $configs);

if ($container->hasDefinition(AclHelper::class)) {
$def = $container->getDefinition(AclHelper::class);
$def->setArgument('$allowClassAclsDefault', $config['allowClassAclsDefault']);
}
}

public function prepend(ContainerBuilder $container)
Expand Down
29 changes: 23 additions & 6 deletions Helper/AclHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@
namespace Curiosity26\AclHelperBundle\Helper;

use Curiosity26\AclHelperBundle\QueryBuilder\AclHelperQueryBuilder;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerAwareTrait;
use Symfony\Bridge\Doctrine\RegistryInterface;
use Symfony\Component\Security\Acl\Model\MutableAclProviderInterface;

class AclHelper
class AclHelper implements LoggerAwareInterface
{
use LoggerAwareTrait;

/**
* @var AclHelperQueryBuilder
*/
Expand All @@ -29,14 +33,21 @@ class AclHelper
*/
private $aclProvider;

/**
* @var bool
*/
private $allowClassAclsDefault = true;

public function __construct(
RegistryInterface $registry,
AclHelperQueryBuilder $queryBuilder,
MutableAclProviderInterface $provider
MutableAclProviderInterface $provider,
bool $allowClassAclsDefault = true
) {
$this->registry = $registry;
$this->queryBuilder = $queryBuilder;
$this->aclProvider = $provider;
$this->registry = $registry;
$this->queryBuilder = $queryBuilder;
$this->aclProvider = $provider;
$this->allowClassAclsDefault = $allowClassAclsDefault;
}

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

return new AclHelperAgent($className, $manager, $this->queryBuilder);
return new AclHelperAgent(
$className,
$manager,
$this->queryBuilder,
$this->allowClassAclsDefault,
$this->logger
);
}

/**
Expand Down
Loading

0 comments on commit 4ad8796

Please sign in to comment.