Commit 5363cd8c authored by David Surville's avatar David Surville
Browse files

Revue de la documentation suite à l'intégration de la version 6.3.0

parent 7472c74e
Loading
Loading
Loading
Loading
+89 −0
Original line number Diff line number Diff line
@@ -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`.
+0 −89
Original line number Diff line number Diff line
@@ -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