mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Rename chill.role
tag to chill_main.provide_role
and optimize role provider
The `chill.role` tag has been renamed to `chill_main.provide_role` to prevent any confusion and make the namespaces more consistent. During this process, the class RoleProvidersCompilerPass was deleted, simplifying the role provision process by injecting tagged services directly into the RoleProvider. The change is also reflected in multiple YAML service configurations and explained in the MIGRATION.md file.
This commit is contained in:
parent
0081146a78
commit
d6a6cc2572
7
MIGRATION.md
Normal file
7
MIGRATION.md
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
# Switch to symfony 5.0
|
||||
|
||||
- the tag `chill.role` is now renamed to `chill_main.provide_role`.
|
||||
|
||||
**Note**: It is not necessary to apply this tag on service definition: the tag is automatically applyied if the
|
||||
service implements `\Chill\MainBundle\Security\ProvideRoleInterface`.
|
@ -4,4 +4,3 @@ services:
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: security.voter }
|
||||
- { name: chill.role }
|
@ -2,5 +2,4 @@ services:
|
||||
Chill\BudgetBundle\Security\Authorization\BudgetElementVoter:
|
||||
autowire: true
|
||||
tags:
|
||||
- { name: chill.role }
|
||||
- { name: security.voter }
|
||||
|
@ -11,8 +11,6 @@ services:
|
||||
|
||||
Chill\DocStoreBundle\Security\Authorization\:
|
||||
resource: "./../Security/Authorization"
|
||||
tags:
|
||||
- { name: chill.role }
|
||||
|
||||
Chill\DocStoreBundle\Workflow\:
|
||||
resource: './../Workflow/'
|
||||
|
@ -6,9 +6,8 @@ services:
|
||||
- "@chill.main.security.authorization.helper"
|
||||
- "@logger"
|
||||
tags:
|
||||
- { name: chill.role }
|
||||
- { name: security.voter }
|
||||
|
||||
|
||||
chill_event.event_participation:
|
||||
class: Chill\EventBundle\Security\Authorization\ParticipationVoter
|
||||
arguments:
|
||||
@ -16,5 +15,4 @@ services:
|
||||
- "@chill.main.security.authorization.helper"
|
||||
- "@logger"
|
||||
tags:
|
||||
- { name: chill.role }
|
||||
- { name: security.voter }
|
||||
|
@ -44,8 +44,6 @@ class ChillMainBundle extends Bundle
|
||||
|
||||
$container->registerForAutoconfiguration(LocalMenuBuilderInterface::class)
|
||||
->addTag('chill.menu_builder');
|
||||
$container->registerForAutoconfiguration(ProvideRoleInterface::class)
|
||||
->addTag('chill.role');
|
||||
$container->registerForAutoconfiguration(CenterResolverInterface::class)
|
||||
->addTag('chill_main.center_resolver');
|
||||
$container->registerForAutoconfiguration(ScopeResolverInterface::class)
|
||||
@ -64,11 +62,12 @@ class ChillMainBundle extends Bundle
|
||||
->addTag('chill_main.cron_job');
|
||||
$container->registerForAutoconfiguration(ViewEntityInfoProviderInterface::class)
|
||||
->addTag('chill_main.entity_info_provider');
|
||||
$container->registerForAutoconfiguration(ProvideRoleInterface::class)
|
||||
->addTag('chill_main.provide_role');
|
||||
|
||||
$container->addCompilerPass(new SearchableServicesCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new ConfigConsistencyCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new TimelineCompilerClass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new RoleProvidersCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new ExportsCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new WidgetsCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
$container->addCompilerPass(new NotificationCounterCompilerPass(), \Symfony\Component\DependencyInjection\Compiler\PassConfig::TYPE_BEFORE_OPTIMIZATION, 0);
|
||||
|
@ -1,41 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Chill is a software for social workers
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Chill\MainBundle\DependencyInjection;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Reference;
|
||||
|
||||
class RoleProvidersCompilerPass implements CompilerPassInterface
|
||||
{
|
||||
public function process(ContainerBuilder $container)
|
||||
{
|
||||
if (!$container->hasDefinition('chill.main.role_provider')) {
|
||||
throw new \LogicException('service chill.main.role_provider is not defined. It is required by RoleProviderCompilerPass');
|
||||
}
|
||||
|
||||
$definition = $container->getDefinition(
|
||||
'chill.main.role_provider'
|
||||
);
|
||||
|
||||
$taggedServices = $container->findTaggedServiceIds(
|
||||
'chill.role'
|
||||
);
|
||||
|
||||
foreach ($taggedServices as $id => $tagAttributes) {
|
||||
$definition->addMethodCall(
|
||||
'addProvider',
|
||||
[new Reference($id)]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@ -22,8 +22,10 @@ namespace Chill\MainBundle\Security;
|
||||
* my_role_declaration:
|
||||
* # ...
|
||||
* tags:
|
||||
* - { name: chill.role }
|
||||
* - { name: chill_main.provide_role }
|
||||
* </pre>
|
||||
*
|
||||
* This tag is also automatically added using dependency injection autoconfiguration.
|
||||
*/
|
||||
interface ProvideRoleInterface
|
||||
{
|
||||
|
@ -13,10 +13,6 @@ namespace Chill\MainBundle\Security;
|
||||
|
||||
class RoleProvider
|
||||
{
|
||||
/**
|
||||
* @var ProvideRoleInterface[]
|
||||
*/
|
||||
private array $providers = [];
|
||||
|
||||
/**
|
||||
* an array where keys are the role, and value is the title
|
||||
@ -26,14 +22,13 @@ class RoleProvider
|
||||
*/
|
||||
private ?array $rolesTitlesCache = null;
|
||||
|
||||
/**
|
||||
* Add a role provider.
|
||||
*
|
||||
* @internal This function is called by the dependency injector: it inject provider
|
||||
*/
|
||||
public function addProvider(ProvideRoleInterface $provider)
|
||||
public function __construct(
|
||||
/**
|
||||
* @var iterable<ProvideRoleInterface>
|
||||
*/
|
||||
private iterable $providers
|
||||
)
|
||||
{
|
||||
$this->providers[] = $provider;
|
||||
}
|
||||
|
||||
public function getRoles(): array
|
||||
|
@ -44,6 +44,8 @@ services:
|
||||
|
||||
chill.main.role_provider:
|
||||
class: Chill\MainBundle\Security\RoleProvider
|
||||
arguments:
|
||||
$providers: !tagged_iterator chill_main.provide_role
|
||||
Chill\MainBundle\Security\RoleProvider: '@chill.main.role_provider'
|
||||
|
||||
chill.main.user_provider:
|
||||
|
@ -11,14 +11,12 @@ services:
|
||||
class: Chill\PersonBundle\Security\Authorization\PersonVoter
|
||||
tags:
|
||||
- { name: security.voter }
|
||||
- { name: chill.role }
|
||||
|
||||
Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: security.voter }
|
||||
- { name: chill.role }
|
||||
|
||||
Chill\PersonBundle\Security\Authorization\AccompanyingPeriodCommentVoter:
|
||||
autowire: true
|
||||
|
@ -3,5 +3,3 @@ services:
|
||||
class: Chill\TaskBundle\Security\Authorization\TaskVoter
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
tags:
|
||||
- { name: chill.role }
|
||||
|
@ -4,4 +4,3 @@ services:
|
||||
$authorizationHelper: '@Chill\MainBundle\Security\Authorization\AuthorizationHelper'
|
||||
tags:
|
||||
- { name: security.voter }
|
||||
- { name: chill.role }
|
||||
|
Loading…
x
Reference in New Issue
Block a user