Commit 2dc31026 authored by David Surville's avatar David Surville
Browse files

Documentation

parent 9009234c
Loading
Loading
Loading
Loading
Loading
+27 −36
Changes for doc/assertion.md: 27 added lines, 36 removed lines.
Original line number Diff line number Diff line
@@ -302,6 +302,18 @@ use UnicaenPrivilege\Guard\PrivilegeController;
            ],
```

Si une assertion est définié au niveau des `guards`, elle sera également testée lors de l'utilisation de la fonction `isAllowed($resource, $privilege = null)` sur l'action de contrôleur concernée.

```php
use Application\Controller\StructureController;
use Application\Provider\Privilege\StructurePrivileges;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Privilege\Privileges;

// Avec une action de contrôleur
$this->isAllowed(PrivilegeController::getResourceId(StructureController::class, 'afficher'));
```

L'assertion peut être également utilisée au niveau des `rules`.

```php
@@ -322,26 +334,7 @@ use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
            ],
```

Elle peut être utilisée au niveau de la navigation pour afficher ou non un élément.
Il suffit d'affecter une resource à un élément de navigation et l'accès à cette ressource va conditionner la visibilité de l'élement.

```php
use Application\Controller\StructureController;
use UnicaenPrivilege\Guard\PrivilegeController;

'navigation' => [
    'default' => [
        'home' => [
            'pages' => [
                [
                    'label' => "Rechercher une structure",
                    'title' => "Rechercher une structure",
                    'route' => 'structure/rechercher',
                    'resource' => PrivilegeController::getResourceId(StructureController::class, 'rechercher'),
                ],
```

On peut également l'utiliser avec la fonction `isAllowed($resource, $privilege = null)` dans un contrôleur (plugin) ou dans une vue (view helper).
Si une assertion est définié au niveau des `rules`, elle sera également testée lors de l'utilisation de la fonction `isAllowed($resource, $privilege = null)` sur le privilège et l'entité concernés. 

```php
use Application\Controller\StructureController;
@@ -349,27 +342,25 @@ use Application\Provider\Privilege\StructurePrivileges;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Privilege\Privileges;

// Avec un privilège
$this->isAllowed(Privileges::getResourceId(StructurePrivileges::EDITION))

// Avec une action de contrôleur
$this->isAllowed(PrivilegeController::getResourceId(StructureController::class, 'editer'));

// Avec une entité
$this->isAllowed($structure, StructurePrivileges::EDITION);
```

Cette fonction peut-être également appelée depuis une aide de vue.
Elle peut être également utilisée au niveau de la navigation en utilisant comme ressource une action de contrôleur à laquelle on a rattaché une assertion.

```php
$this->getView()->isAllowed(Privileges::getResourceId(StructurePrivileges::EDITION));
```

Et si on est ni dans une vue, ni dans une aide de vue, ni dans un contrôleur ?
La fonction `isAllowed` est une méthode publique du service `Authorize` de `BjyAuthorize` qui peut être utilisée en récupérant le service.

```php
$authorizeService = $container->get('BjyAuthorize\Service\Authorize');
use Application\Controller\StructureController;
use UnicaenPrivilege\Guard\PrivilegeController;

$canDoThat = $authorizeService->isAllowed();
'navigation' => [
    'default' => [
        'home' => [
            'pages' => [
                [
                    'label' => "Recherche d'un structure",
                    'title' => "Rechercher une structure",
                    'route' => 'structure/rechercher',
                    // Avec une action de contrôleur
                    'resource' => PrivilegeController::getResourceId(StructureController::class, 'rechercher'),
                ],
```
 No newline at end of file
+66 −1
Changes for doc/privilege.md: 66 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -249,7 +249,6 @@ use Groupe\Entity\Db\GroupeType;
                    'resources' => [
                        GroupeType::RESOURCE_ID,
                    ],
                    'assertion' => 'GroupeRechercheAssertion',
                ],
                [
                    'privileges' => [
@@ -270,3 +269,69 @@ use Groupe\Entity\Db\GroupeType;
                    'assertion' => 'GroupeAjoutAssertion',
                ],
```

### La fonction "isAllowed"

Les privilèges peuvent être également utilisés avec la fonction `isAllowed($resource, $privilege = null)`, qui peut être utilisée dans un contrôleur (plugin) ou dans une vue (view helper) et qui permet de tester un droit. Cette fonction est notamment et implicitement utilisée dans les `guards` donc inutile de répéter le test. 

```php
use Groupe\Controller\GroupeController;
use Groupe\Provider\Privilege\GroupePrivileges;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Privilege\Privileges;

// Avec un privilège
$this->isAllowed(Privileges::getResourceId(GroupePrivileges::EDITION))

// Avec une action de contrôleur
$this->isAllowed(PrivilegeController::getResourceId(GroupeController::class, 'afficher'));
```

Cette fonction peut-être également appelée depuis une aide de vue.

```php
use Groupe\Provider\Privilege\GroupePrivileges;
use UnicaenPrivilege\Provider\Privilege\Privileges;

$this->getView()->isAllowed(Privileges::getResourceId(GroupePrivileges::EDITION));
```

Et si on est ni dans une vue, ni dans une aide de vue, ni dans un contrôleur ?
La fonction `isAllowed` est une méthode publique du service `Authorize` de `BjyAuthorize` qui peut être utilisée en récupérant le service.

```php
$authorizeService = $container->get('BjyAuthorize\Service\Authorize');

$canDoThat = $authorizeService->isAllowed();
```

### La navigation

Ils peuvent être utilisés aussi au niveau de la navigation pour afficher ou non un élément.
Il suffit d'affecter une resource à un élément de navigation et l'accès à cette ressource va conditionner la visibilité de l'élement.

```php
use Groupe\Controller\GroupeController;
use Groupe\Provider\Privilege\GroupePrivileges;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Privilege\Privileges;

'navigation' => [
    'default' => [
        'home' => [
            'pages' => [
                [
                    'label' => "Consultation d'un groupe",
                    'title' => "Consulter un groupe",
                    'route' => 'groupe/consulter',
                    // Avec un privilège
                    'resource' => Privileges::getResourceId(GroupePrivileges::CONSULTATION),
                ],
                [
                    'label' => "Recherche d'un groupe",
                    'title' => "Rechercher un groupe",
                    'route' => 'groupe/rechercher',
                    // Avec une action de contrôleur
                    'resource' => PrivilegeController::getResourceId(GroupeController::class, 'rechercher'),
                ],
```
 No newline at end of file