Loading doc/privilege.md +89 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,95 @@ Il est possible de redéfinir l'entité utilisée pour gérer les privilèges ma ] ``` ## Cache Activer la mise en cache du tableau des rôles par privilège (nécessaire à l'initialisation du moteur d'ACL), apporte un gain de temps de réponse appréciable si votre appli met en jeu un nombre important de rôles et/ou de privilèges. La clé `'privileges_roles_cache_enabled'` permet d'activer la mise en cache : ```php 'unicaen-auth' => [ //... /** * 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, ], ``` Le cache choisi par défaut est `\Laminas\Cache\Storage\Adapter\Filesystem`. Vous devez activer le module éponyme dans la config de votre appli (`config/application.config.php`) : ```php return [ 'modules' => [ //... 'Laminas\Cache', // celui-ci est sans doute déjà inclus 'Laminas\Cache\Storage\Adapter\Filesystem', //... ], ]; ``` Ensuite, la config de votre appli doit fournir le chemin vers le répertoire de cache : ```php 'caches' => [ 'unicaen-privilege-cache' => [ 'options' => [ //'ttl' => 60*60*24, // 24h 'cache_dir' => __DIR__ . '/../../data/cache', // pensez aux droits d'accès au répertoire ], ], ], ``` Le cache Filesystem n'est peut-être pas le plus efficace mais il a l'avantage d'être simple, basique. Une commande est incluse dans la bibliothèque pour le vider (dans un script d'install, par exemple) : ```bash $ # sudo ls -lh data/cache/laminascache-ca # adaptez à votre situation/config $ vendor/bin/laminas privilege:clear-cache --key 'privileges_roles' $ # sudo ls -lh data/cache/laminascache-ca ``` Si besoin, il est possible d'utiliser un autre nom et/ou type de cache, exemple : ```php 'unicaen-auth' => [ /** * Nom du cache du module (doit exister dans 'caches'). */ 'module_cache_name' => 'sygal-privilege-cache', ], //... 'caches' => [ 'sygal-privilege-cache' => [ 'adapter' => \Laminas\Cache\Storage\Adapter\Apcu::class, // ATTENTION : le vidage du cache APCu est impossible depuis la ligne de commande car l'instance du cache cli // diffère de l'instance du cache web. Une solution est de passer par le service PHP-FPM en faisant un // `service php8.2-fpm reload` ou équivalent. 'options' => [ 'ttl' => 60*60*10, // 10h ], 'plugins' => [ ['name' => 'Serializer'], // indispensable ], ], ], ``` Si vous obtenez l'erreur suivante, suivez le [guide de migration de la v6.3.0](migration.md#630) : `Fatal error: Uncaught TypeError: BjyAuthorize\Service\Authorize::addResourceProvider(): Argument #1 ($provider) must be of type BjyAuthorize\Provider\Resource\ProviderInterface, UnicaenPrivilege\Service\Privilege\PrivilegeService given, called in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 426 and defined in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 127` ## Navigation Un lien vers la page de gestion des privilèges est disponible par défaut dans le menu `Administration`. Loading readme.md +0 −89 Original line number Diff line number Diff line Loading @@ -69,92 +69,3 @@ Il est nécessaire de modifier la base de données et d'utiliser les scripts de * [Les privilèges](doc/privilege.md) * [Les assertions](doc/assertion.md) * [Les périmètres](doc/perimetre.md) No newline at end of file Cache ===== Activer la mise en cache du tableau des rôles par privilège (nécessaire à l'initialisation du moteur d'ACL), apporte un gain de temps de réponse appréciable si votre appli met en jeu un nombre important de rôles et/ou de privilèges. La clé `'privileges_roles_cache_enabled'` permet d'activer la mise en cache : ```php 'unicaen-auth' => [ //... /** * 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, ], ``` Le cache choisi par défaut est `\Laminas\Cache\Storage\Adapter\Filesystem`. Vous devez activer le module éponyme dans la config de votre appli (`config/application.config.php`) : ```php return [ 'modules' => [ //... 'Laminas\Cache', // celui-ci est sans doute déjà inclus 'Laminas\Cache\Storage\Adapter\Filesystem', //... ], ]; ``` Ensuite, la config de votre appli doit fournir le chemin vers le répertoire de cache : ```php 'caches' => [ 'unicaen-privilege-cache' => [ 'options' => [ //'ttl' => 60*60*24, // 24h 'cache_dir' => __DIR__ . '/../../data/cache', // pensez aux droits d'accès au répertoire ], ], ], ``` Le cache Filesystem n'est peut-être pas le plus efficace mais il a l'avantage d'être simple, basique. Une commande est incluse dans la bibliothèque pour le vider (dans un script d'install, par exemple) : ```bash $ # sudo ls -lh data/cache/laminascache-ca # adaptez à votre situation/config $ vendor/bin/laminas privilege:clear-cache --key 'privileges_roles' $ # sudo ls -lh data/cache/laminascache-ca ``` Si besoin, il est possible d'utiliser un autre nom et/ou type de cache, exemple : ```php 'unicaen-auth' => [ /** * Nom du cache du module (doit exister dans 'caches'). */ 'module_cache_name' => 'sygal-privilege-cache', ], //... 'caches' => [ 'sygal-privilege-cache' => [ 'adapter' => \Laminas\Cache\Storage\Adapter\Apcu::class, // ATTENTION : le vidage du cache APCu est impossible depuis la ligne de commande car l'instance du cache cli // diffère de l'instance du cache web. Une solution est de passer par le service PHP-FPM en faisant un // `service php8.2-fpm reload` ou équivalent. 'options' => [ 'ttl' => 60*60*10, // 10h ], 'plugins' => [ ['name' => 'Serializer'], // indispensable ], ], ], ``` Si vous obtenez l'erreur suivante, suivez le [guide de migration de la v6.3.0](doc/migration.md#630) : `Fatal error: Uncaught TypeError: BjyAuthorize\Service\Authorize::addResourceProvider(): Argument #1 ($provider) must be of type BjyAuthorize\Provider\Resource\ProviderInterface, UnicaenPrivilege\Service\Privilege\PrivilegeService given, called in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 426 and defined in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 127` No newline at end of file Loading
doc/privilege.md +89 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,95 @@ Il est possible de redéfinir l'entité utilisée pour gérer les privilèges ma ] ``` ## Cache Activer la mise en cache du tableau des rôles par privilège (nécessaire à l'initialisation du moteur d'ACL), apporte un gain de temps de réponse appréciable si votre appli met en jeu un nombre important de rôles et/ou de privilèges. La clé `'privileges_roles_cache_enabled'` permet d'activer la mise en cache : ```php 'unicaen-auth' => [ //... /** * 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, ], ``` Le cache choisi par défaut est `\Laminas\Cache\Storage\Adapter\Filesystem`. Vous devez activer le module éponyme dans la config de votre appli (`config/application.config.php`) : ```php return [ 'modules' => [ //... 'Laminas\Cache', // celui-ci est sans doute déjà inclus 'Laminas\Cache\Storage\Adapter\Filesystem', //... ], ]; ``` Ensuite, la config de votre appli doit fournir le chemin vers le répertoire de cache : ```php 'caches' => [ 'unicaen-privilege-cache' => [ 'options' => [ //'ttl' => 60*60*24, // 24h 'cache_dir' => __DIR__ . '/../../data/cache', // pensez aux droits d'accès au répertoire ], ], ], ``` Le cache Filesystem n'est peut-être pas le plus efficace mais il a l'avantage d'être simple, basique. Une commande est incluse dans la bibliothèque pour le vider (dans un script d'install, par exemple) : ```bash $ # sudo ls -lh data/cache/laminascache-ca # adaptez à votre situation/config $ vendor/bin/laminas privilege:clear-cache --key 'privileges_roles' $ # sudo ls -lh data/cache/laminascache-ca ``` Si besoin, il est possible d'utiliser un autre nom et/ou type de cache, exemple : ```php 'unicaen-auth' => [ /** * Nom du cache du module (doit exister dans 'caches'). */ 'module_cache_name' => 'sygal-privilege-cache', ], //... 'caches' => [ 'sygal-privilege-cache' => [ 'adapter' => \Laminas\Cache\Storage\Adapter\Apcu::class, // ATTENTION : le vidage du cache APCu est impossible depuis la ligne de commande car l'instance du cache cli // diffère de l'instance du cache web. Une solution est de passer par le service PHP-FPM en faisant un // `service php8.2-fpm reload` ou équivalent. 'options' => [ 'ttl' => 60*60*10, // 10h ], 'plugins' => [ ['name' => 'Serializer'], // indispensable ], ], ], ``` Si vous obtenez l'erreur suivante, suivez le [guide de migration de la v6.3.0](migration.md#630) : `Fatal error: Uncaught TypeError: BjyAuthorize\Service\Authorize::addResourceProvider(): Argument #1 ($provider) must be of type BjyAuthorize\Provider\Resource\ProviderInterface, UnicaenPrivilege\Service\Privilege\PrivilegeService given, called in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 426 and defined in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 127` ## Navigation Un lien vers la page de gestion des privilèges est disponible par défaut dans le menu `Administration`. Loading
readme.md +0 −89 Original line number Diff line number Diff line Loading @@ -69,92 +69,3 @@ Il est nécessaire de modifier la base de données et d'utiliser les scripts de * [Les privilèges](doc/privilege.md) * [Les assertions](doc/assertion.md) * [Les périmètres](doc/perimetre.md) No newline at end of file Cache ===== Activer la mise en cache du tableau des rôles par privilège (nécessaire à l'initialisation du moteur d'ACL), apporte un gain de temps de réponse appréciable si votre appli met en jeu un nombre important de rôles et/ou de privilèges. La clé `'privileges_roles_cache_enabled'` permet d'activer la mise en cache : ```php 'unicaen-auth' => [ //... /** * 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, ], ``` Le cache choisi par défaut est `\Laminas\Cache\Storage\Adapter\Filesystem`. Vous devez activer le module éponyme dans la config de votre appli (`config/application.config.php`) : ```php return [ 'modules' => [ //... 'Laminas\Cache', // celui-ci est sans doute déjà inclus 'Laminas\Cache\Storage\Adapter\Filesystem', //... ], ]; ``` Ensuite, la config de votre appli doit fournir le chemin vers le répertoire de cache : ```php 'caches' => [ 'unicaen-privilege-cache' => [ 'options' => [ //'ttl' => 60*60*24, // 24h 'cache_dir' => __DIR__ . '/../../data/cache', // pensez aux droits d'accès au répertoire ], ], ], ``` Le cache Filesystem n'est peut-être pas le plus efficace mais il a l'avantage d'être simple, basique. Une commande est incluse dans la bibliothèque pour le vider (dans un script d'install, par exemple) : ```bash $ # sudo ls -lh data/cache/laminascache-ca # adaptez à votre situation/config $ vendor/bin/laminas privilege:clear-cache --key 'privileges_roles' $ # sudo ls -lh data/cache/laminascache-ca ``` Si besoin, il est possible d'utiliser un autre nom et/ou type de cache, exemple : ```php 'unicaen-auth' => [ /** * Nom du cache du module (doit exister dans 'caches'). */ 'module_cache_name' => 'sygal-privilege-cache', ], //... 'caches' => [ 'sygal-privilege-cache' => [ 'adapter' => \Laminas\Cache\Storage\Adapter\Apcu::class, // ATTENTION : le vidage du cache APCu est impossible depuis la ligne de commande car l'instance du cache cli // diffère de l'instance du cache web. Une solution est de passer par le service PHP-FPM en faisant un // `service php8.2-fpm reload` ou équivalent. 'options' => [ 'ttl' => 60*60*10, // 10h ], 'plugins' => [ ['name' => 'Serializer'], // indispensable ], ], ], ``` Si vous obtenez l'erreur suivante, suivez le [guide de migration de la v6.3.0](doc/migration.md#630) : `Fatal error: Uncaught TypeError: BjyAuthorize\Service\Authorize::addResourceProvider(): Argument #1 ($provider) must be of type BjyAuthorize\Provider\Resource\ProviderInterface, UnicaenPrivilege\Service\Privilege\PrivilegeService given, called in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 426 and defined in /app/vendor/unicaen/bjy-authorize/src/BjyAuthorize/Service/Authorize.php on line 127` No newline at end of file