Commit 7545f5f7 authored by David Surville's avatar David Surville
Browse files

[Tac] Réorganisation du code au niveau des privilèges et des catégories de...

[Tac] Réorganisation du code au niveau des privilèges et des catégories de privilèges pour accueillir les périmètres
parent e2aae3da
Loading
Loading
Loading
Loading
Loading
+0 −137
Original line number Diff line number Diff line
<?php

use UnicaenPrivilege\Controller\CategorieController;
use UnicaenPrivilege\Controller\CategorieControllerFactory;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreForm;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormFactory;
use UnicaenPrivilege\Form\Categorie\CategorieForm;
use UnicaenPrivilege\Form\Categorie\CategorieFormFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Categorie\CategorieServiceFactory;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

return [

    'bjyauthorize' => [
        'guards' => [
            UnicaenPrivilege\Guard\PrivilegeController::class => [
                [
                    'controller' => CategorieController::class,
                    'action' => [
                        'index',
                        'ajouter',
                        'gerer',
                        'provider',
                        'modifier',
                        'supprimer',
                    ],
                    'privileges' => [
                        PrivilegePrivileges::PRIVILEGE_AJOUTER,
                    ],
                ],
            ],
        ],
    ],

    'router' => [
        'routes' => [
            'unicaen-privilege' => [
                'child_routes' => [
                    'categorie' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/categorie',
                            'defaults' => [
                                'controller' => CategorieController::class,
                                'action' => 'index',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/ajouter',
                                    'defaults' => [
                                        'controller' => CategorieController::class,
                                        'action'     => 'ajouter',
                                    ],
                                ],
                            ],
                            'gerer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/gerer/:categorie',
                                    'defaults' => [
                                        'controller' => CategorieController::class,
                                        'action'     => 'gerer',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'provider' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/provider/:categorie',
                                    'defaults' => [
                                        'controller' => CategorieController::class,
                                        'action'     => 'provider',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'modifier' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:categorie',
                                    'defaults' => [
                                        'controller' => CategorieController::class,
                                        'action'     => 'modifier',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'supprimer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/supprimer/:categorie',
                                    'defaults' => [
                                        'controller' => CategorieController::class,
                                        'action'     => 'supprimer',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],

    'navigation' => [
        'default' => [
        ],
    ],

    'controllers' => [
        'factories' => [
            CategorieController::class => CategorieControllerFactory::class,
        ],
    ],

    'service_manager' => [
        'factories' => [
            CategorieService::class => CategorieServiceFactory::class,
        ],
    ],

    'form_elements' => [
        'factories' => [
            CategorieForm::class => CategorieFormFactory::class,
            CategorieFiltreForm::class => CategorieFiltreFormFactory::class,
        ],
    ],
];
 No newline at end of file
+93 −0
Original line number Diff line number Diff line
<?php

use UnicaenPrivilege\Controller\PrivilegeCategorieController;
use UnicaenPrivilege\Controller\PrivilegeCategorieControllerFactory;
use UnicaenPrivilege\Controller\PrivilegeController;
use UnicaenPrivilege\Controller\PrivilegeControllerFactory;
use UnicaenPrivilege\Form\Privilege\CategorieFiltreForm;
use UnicaenPrivilege\Form\Privilege\CategorieFiltreFormFactory;
use UnicaenPrivilege\Form\Privilege\CategorieForm;
use UnicaenPrivilege\Form\Privilege\CategorieFormFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeForm;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProviderFactory;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceFactory;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceFactory;
use UnicaenPrivilege\View\Privilege\PrivilegeViewHelper;
@@ -63,6 +71,20 @@ return [
                        PrivilegePrivileges::PRIVILEGE_SUPPRIMER,
                    ],
                ],
                [
                    'controller' => PrivilegeCategorieController::class,
                    'action' => [
                        'index',
                        'ajouter',
                        'gerer',
                        'provider',
                        'modifier',
                        'supprimer',
                    ],
                    'privileges' => [
                        PrivilegePrivileges::PRIVILEGE_AJOUTER,
                    ],
                ],
            ],
        ],
    ],
@@ -120,6 +142,73 @@ return [
                            ],
                        ],
                    ],
                    'categorie' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/categorie',
                            'defaults' => [
                                'controller' => PrivilegeCategorieController::class,
                                'action' => 'index',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/ajouter',
                                    'defaults' => [
                                        'controller' => PrivilegeCategorieController::class,
                                        'action'     => 'ajouter',
                                    ],
                                ],
                            ],
                            'gerer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/gerer/:categorie',
                                    'defaults' => [
                                        'controller' => PrivilegeCategorieController::class,
                                        'action'     => 'gerer',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'provider' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/provider/:categorie',
                                    'defaults' => [
                                        'controller' => PrivilegeCategorieController::class,
                                        'action'     => 'provider',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'modifier' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:categorie',
                                    'defaults' => [
                                        'controller' => PrivilegeCategorieController::class,
                                        'action'     => 'modifier',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'supprimer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/supprimer/:categorie',
                                    'defaults' => [
                                        'controller' => PrivilegeCategorieController::class,
                                        'action'     => 'supprimer',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                ],
            ],
        ],
@@ -127,12 +216,14 @@ return [

    'controllers' => [
        'factories' => [
            PrivilegeCategorieController::class => PrivilegeCategorieControllerFactory::class,
            PrivilegeController::class  => PrivilegeControllerFactory::class,
        ],
    ],

    'service_manager' => [
        'factories' => [
            PrivilegeCategorieService::class => PrivilegeCategorieServiceFactory::class,
            PrivilegeService::class => PrivilegeServiceFactory::class,
            PrivilegeRuleProvider::class => PrivilegeRuleProviderFactory::class,
        ],
@@ -140,6 +231,8 @@ return [

    'form_elements' => [
        'factories' => [
            CategorieFiltreForm::class => CategorieFiltreFormFactory::class,
            CategorieForm::class => CategorieFormFactory::class,
            PrivilegeForm::class => PrivilegeFormFactory::class,
        ],
    ],
+18 −20
Original line number Diff line number Diff line
@@ -2,18 +2,16 @@

namespace UnicaenPrivilege\Controller;

use UnicaenPrivilege\Entity\Db\CategorieInterface;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Categorie\CategorieFormAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Form\Privilege\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Privilege\CategorieFormAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class CategorieController extends AbstractActionController
class PrivilegeCategorieController extends AbstractActionController
{
    use CategorieServiceAwareTrait;
    use PrivilegeCategorieServiceAwareTrait;
    use PrivilegeServiceAwareTrait;
    use CategorieFormAwareTrait;
    use CategorieFiltreFormAwareTrait;
@@ -24,20 +22,20 @@ class CategorieController extends AbstractActionController
        $namespace = $this->params()->fromQuery('namespace');
        if($namespace) {
            $form->get('namespace')->setValue($namespace);
            $categories = $this->categorieService->findByNamespace($namespace);
            $categories = $this->privilegeCategorieService->findByNamespace($namespace);
        }
        else {
            $categories = $this->categorieService->findAll();
            $categories = $this->privilegeCategorieService->findAll();
        }

        $title = "Gestion des catégories";
        $title = "Gestion des catégories de privilèges";
        return compact('title', 'form', 'categories');
    }

    public function ajouterAction() : ViewModel
    {
        $categorie = $this->categorieService->getEntityInstance();
        $categorie->setOrdre($this->categorieService->getMaxOrdre()+1);
        $categorie = $this->privilegeCategorieService->getEntityInstance();
        $categorie->setOrdre($this->privilegeCategorieService->getMaxOrdre()+1);
        $form = $this->categorieForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/ajouter', [], [], true));
        $form->bind($categorie);
@@ -46,7 +44,7 @@ class CategorieController extends AbstractActionController
            $form->setData($data);
            if ($form->isValid()) {
                try {
                    $this->categorieService->create($categorie);
                    $this->privilegeCategorieService->create($categorie);
                    $this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> créée avec succès.", $categorie->getLibelle()));
                } catch (Exception $e) {
                    $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la création de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
@@ -66,7 +64,7 @@ class CategorieController extends AbstractActionController

    public function gererAction() : array
    {
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $categorie = $this->privilegeCategorieService->getRequestedCategorie($this);
        $privileges = $this->privilegeService->findByCategorie($categorie);
        $title = "Gestion de la catégorie";

@@ -75,14 +73,14 @@ class CategorieController extends AbstractActionController

    public function providerAction() : array
    {
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $categorie = $this->privilegeCategorieService->getRequestedCategorie($this);

        return compact('categorie');
    }

    public function modifierAction() : ViewModel
    {
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $categorie = $this->privilegeCategorieService->getRequestedCategorie($this);
        $form = $this->categorieForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/modifier', ['categorie' => $categorie->getId()], [], true));
        $form->bind($categorie);
@@ -91,7 +89,7 @@ class CategorieController extends AbstractActionController
            $form->setData($data);
            if ($form->isValid()) {
                try {
                    $this->categorieService->update($categorie);
                    $this->privilegeCategorieService->update($categorie);
                    $this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> modifiée avec succès.", $categorie->getLibelle()));
                } catch (Exception $e) {
                    $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la modification de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
@@ -100,7 +98,7 @@ class CategorieController extends AbstractActionController
        }

        $view = new ViewModel();
        $view->setTemplate('unicaen-privilege/categorie/template/form-categorie');
        $view->setTemplate('unicaen-privilege/privilege-categorie/template/form-categorie');
        $view->setVariables([
            'title' => "Modification de la catégorie",
            'form' => $form,
@@ -113,8 +111,8 @@ class CategorieController extends AbstractActionController
    public function supprimerAction() : array
    {
        try {
            $categorie = $this->categorieService->getRequestedCategorie($this);
            $this->categorieService->delete($categorie);
            $categorie = $this->privilegeCategorieService->getRequestedCategorie($this);
            $this->privilegeCategorieService->delete($categorie);
            $this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> supprimée avec succès.", $categorie->getLibelle()));
        } catch (Exception $e) {
            $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la suppression de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
+9 −9
Original line number Diff line number Diff line
@@ -3,12 +3,12 @@
namespace UnicaenPrivilege\Controller;

use Interop\Container\ContainerInterface;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreForm;
use UnicaenPrivilege\Form\Categorie\CategorieForm;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Form\Privilege\CategorieFiltreForm;
use UnicaenPrivilege\Form\Privilege\CategorieForm;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;

class CategorieControllerFactory
class PrivilegeCategorieControllerFactory
{
    /**
     * Create controller
@@ -16,21 +16,21 @@ class CategorieControllerFactory
     * @param ContainerInterface $container
     * @param string $requestedName
     * @param array|null $options
     * @return CategorieController|object
     * @return PrivilegeCategorieController|object
     */
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        /**
         * @var CategorieService $categorieService
         * @var PrivilegeCategorieService $categorieService
         * @var PrivilegeService $privilegeService
         */
        $categorieService = $container->get(CategorieService::class);
        $categorieService = $container->get(PrivilegeCategorieService::class);
        $privilegeService = $container->get(PrivilegeService::class);
        $categorieForm = $container->get('FormElementManager')->get(CategorieForm::class);
        $categorieFiltreForm = $container->get('FormElementManager')->get(CategorieFiltreForm::class);

        $controller = new CategorieController();
        $controller->setCategorieService($categorieService);
        $controller = new PrivilegeCategorieController();
        $controller->setPrivilegeCategorieService($categorieService);
        $controller->setPrivilegeService($privilegeService);
        $controller->setCategorieForm($categorieForm);
        $controller->setCategorieFiltreForm($categorieFiltreForm);
+4 −6
Original line number Diff line number Diff line
@@ -2,19 +2,17 @@

namespace UnicaenPrivilege\Controller;

use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Privilege\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\JsonModel;
use Zend\View\Model\ViewModel;

class PrivilegeController extends AbstractActionController
{
    use CategorieServiceAwareTrait;
    use PrivilegeCategorieServiceAwareTrait;
    use PrivilegeServiceAwareTrait;
    use RoleServiceAwareTrait;
    use PrivilegeFormAwareTrait;
@@ -37,7 +35,7 @@ class PrivilegeController extends AbstractActionController

    public function ajouterAction() : ViewModel
    {
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $categorie = $this->privilegeCategorieService->getRequestedCategorie($this);
        $privilege = $this->privilegeService->getEntityInstance();
        $privilege->setOrdre($this->privilegeService->getMaxOrdreByCategorie($categorie)+1);
        $privilege->setCategorie($categorie);
Loading