Commit 7472c74e authored by David Surville's avatar David Surville
Browse files

Merge branch 'master' into release/8.0-perimetres

parents c8909e08 445b7c74
Loading
Loading
Loading
Loading
+6 −1
Changes for CHANGELOG.md: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
Journal des modifications
=========================


6.3.0
-----
- Possibilité d'activer la mise en cache du tableau des rôles par privilège pour accélerer l'init du moteur d'ACL
  (cf. [migration.md](doc/migration.md#630)).

6.0.5 (19/12/2023)
------------------

- [Fix] Un seul privilège peut être transmis sous forme de string à convertir en array 

6.0.1 (21/03/2023)
+3 −0
Changes for composer.json: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -8,10 +8,13 @@
        }
    ],
    "require": {
        "laminas/laminas-cache": "^3.13",
        "laminas/laminas-cache-storage-adapter-filesystem": "^2.5",
        "unicaen/app": ">=5.0",
	    "unicaen/utilisateur": "dev-release/8.0-perimetres"
    },
    "require-dev": {
        "laminas/laminas-cli": "^1.11",
        "phpunit/phpunit": ">=3.7"
    },
    "autoload": {
+109 −0
Changes for config/merged/cache.config.php: 109 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenPrivilege;

use Laminas\Cache\Storage\Adapter\Filesystem;
use Laminas\Router\Http\Literal;
use UnicaenPrivilege\Command\ClearCacheCommand;
use UnicaenPrivilege\Command\ClearCacheCommandFactory;
use UnicaenPrivilege\Controller\CacheController;
use UnicaenPrivilege\Controller\CacheControllerFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Cache\CachePrivileges;
use UnicaenPrivilege\Service\Cache\CacheService;
use UnicaenPrivilege\Service\Cache\CacheServiceFactory;

return [
    'unicaen-auth' => [
        /**
         * Nom du cache du module (à déclarer via la clé de config 'caches').
         */
        'module_cache_name' => 'unicaen-privilege-cache',

        /**
         * Activation ou non de la mise en cache du tableau `privilège => [rôles ayant ce privilège]`.
         * @see \UnicaenPrivilege\Provider\Privilege\PrivilegeProvider::getPrivilegesRoles()
         */
        'privileges_roles_cache_enabled' => false,
    ],

    'caches' => [
        'unicaen-privilege-cache' => [
            'adapter' => Filesystem::class,
            //'adapter' => \Laminas\Cache\Storage\Adapter\Apcu::class,
            // ATTENTION : ne pas utiliser le cache APCu car le vidage est impossible depuis la ligne de commande (car instance du cache cli <> instance du cache web)
            'options' => [
                'ttl' => 60*60*24, // 24h
                'cache_dir' => '/tmp',
            ],
            'plugins' => [
                ['name' => 'Serializer'],
            ],
        ],
    ],

    'laminas-cli' => [
        'commands' => [
            'privilege:clear-cache' => ClearCacheCommand::class,
        ],
    ],

    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => CacheController::class,
                    'action' => [
                        'clear-privileges-roles',
                    ],
                    'privileges' => [
                        CachePrivileges::PRIVILEGE_CLEAR_PRIVILEGES_ROLES,
                    ],
                ],
            ],
        ],
    ],

    'router' => [
        'routes' => [
            'unicaen-privilege' => [
                'type' => Literal::class,
                'options' => [
                    'route' => '/cache',
                    'defaults' => [
                        'controller' => CacheController::class,
                    ],
                ],
                'may_terminate' => false,
                'child_routes' => [
                    'attribuer' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/clear-privileges-roles',
                            'defaults' => [
                                /** @see CacheController::clearPrivilegesRolesAction() */
                                'controller' => CacheController::class,
                                'action' => 'clear-privileges-roles',
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],

    'controllers' => [
        'factories' => [

            CacheController::class => CacheControllerFactory::class,

        ]
    ],

    'service_manager' => [
        'factories' => [
            CacheService::class => CacheServiceFactory::class,
            ClearCacheCommand::class => ClearCacheCommandFactory::class,
        ],
    ],
];
+3 −1
Changes for config/merged/privilege.config.php: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@ use UnicaenPrivilege\Form\Privilege\CategorieFormFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeForm;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Privilege\PrivilegeProvider;
use UnicaenPrivilege\Provider\Privilege\PrivilegeProviderFactory;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProviderFactory;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
@@ -22,7 +24,6 @@ use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;

return [

    'bjyauthorize' => [
        'guards' => [
            UnicaenPrivilege\Guard\PrivilegeController::class => [
@@ -275,6 +276,7 @@ return [
        'factories' => [
            PrivilegeCategorieService::class => PrivilegeCategorieServiceFactory::class,
            PrivilegeService::class => PrivilegeServiceFactory::class,
            PrivilegeProvider::class => PrivilegeProviderFactory::class,
            PrivilegeRuleProvider::class => PrivilegeRuleProviderFactory::class,
        ],
    ],
+10 −4
Changes for config/unicaen-privilege.global.php.dist: 10 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,8 @@

use UnicaenPrivilege\Entity\Db\Privilege;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Privilege\PrivilegeProvider;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;


$settings = [
@@ -21,16 +21,22 @@ if ($settings['unicaen-auth']['enable_privileges']) {
             * NB: la classe spécifiée doit hériter de @see \UnicaenPrivilege\Entity\Db\AbstractPrivilege
             */
            'privilege_entity_class' => Privilege::class,

            /**
             * Activation ou non de la mise en cache du tableau `privilège => [rôles ayant ce privilège]`.
             * @see \UnicaenPrivilege\Provider\Privilege\PrivilegeProvider::getPrivilegesRoles()
             */
            'privileges_roles_cache_enabled' => false,
        ],

        'bjyauthorize' => [

            'resource_providers' => [
                /**
                 * Le service Privilege peut aussi être une source de ressources,
                 * si on souhaite tester directement l'accès à un privilège
                 * Le PrivilegeProvider est aussi une source de Ressource, du fait que dans unicaen/auth
                 * on souhaite tester directement l'accès à un privilège (i.e. privilège === ressource).
                 */
                PrivilegeService::class => [],
                PrivilegeProvider::class => [],
            ],

            'rule_providers'     => [
Loading