Commit a0c7d947 authored by David Surville's avatar David Surville
Browse files

[Evo] Passage de UnicaenAuth aux trois bibliothèques UnicaenAuthentificatuion...

[Evo] Passage de UnicaenAuth aux trois bibliothèques UnicaenAuthentificatuion / UnicaenPrivilege / UnicaenUtilisateur
parent 435ab6fb
Loading
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -2,10 +2,10 @@

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\Form\Categorie\CategorieHydrator;
use UnicaenPrivilege\Form\Categorie\CategorieHydratorFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Categorie\CategorieServiceFactory;
@@ -121,19 +121,17 @@ return [
            CategorieController::class => CategorieControllerFactory::class,
        ],
    ],

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

    'form_elements' => [
        'factories' => [
            CategorieForm::class => CategorieFormFactory::class,
        ],
    ],
    'hydrators' => [
        'factories' => [
            CategorieHydrator::class => CategorieHydratorFactory::class,
            CategorieFiltreForm::class => CategorieFiltreFormFactory::class,
        ],
    ],
];
 No newline at end of file
+10 −11
Original line number Diff line number Diff line
@@ -4,13 +4,12 @@ use UnicaenPrivilege\Controller\PrivilegeController;
use UnicaenPrivilege\Controller\PrivilegeControllerFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeForm;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeHydrator;
use UnicaenPrivilege\Form\Privilege\PrivilegeHydratorFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProviderFactory;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceFactory;
use UnicaenPrivilege\View\Privilege\PrivilegeViewHelper;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

@@ -31,10 +30,10 @@ return [
                [
                    'controller' => PrivilegeController::class,
                    'action' => [
                        'affecter',
                        'attribuer',
                    ],
                    'privileges' => [
                        PrivilegePrivileges::PRIVILEGE_AFFECTER,
                        PrivilegePrivileges::PRIVILEGE_ATTRIBUER,
                    ],
                ],
                [
@@ -81,13 +80,13 @@ return [
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'affecter' => [
                    'attribuer' => [
                        'type' => Segment::class,
                        'options' => [
                            'route'    => '/affecter/:role/:privilege',
                            'route'    => '/attribuer/:role/:privilege',
                            'defaults' => [
                                'controller' => PrivilegeController::class,
                                'action' => 'affecter',
                                'action' => 'attribuer',
                            ],
                        ],
                    ],
@@ -144,10 +143,10 @@ return [
            PrivilegeForm::class => PrivilegeFormFactory::class,
        ],
    ],
    'hydrators' => [
        'factories' => [
            PrivilegeHydrator::class => PrivilegeHydratorFactory::class,

    'view_helpers' => [
        'invokables' => [
            'privilege' => PrivilegeViewHelper::class,
        ],
    ],

];
 No newline at end of file
+62 −70
Original line number Diff line number Diff line
@@ -3,8 +3,10 @@
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\Service\Privilege\PrivilegeServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
@@ -12,122 +14,112 @@ use Zend\View\Model\ViewModel;
class CategorieController extends AbstractActionController
{
    use CategorieServiceAwareTrait;
    use PrivilegeServiceAwareTrait;
    use CategorieFormAwareTrait;
    use CategorieFiltreFormAwareTrait;

    public function indexAction() : ViewModel
    public function indexAction() : array
    {
        /**
         * @var string[] $namespaces
         * @var string $namespaces
         */
        $namespaces = $this->categorieService->listerNamespaces();
        $form = $this->categorieFiltreForm;
        $namespace = $this->params()->fromQuery('namespace');

        /** @var CategorieInterface[] $categories */
        if($namespace) {
            $form->get('namespace')->setValue($namespace);
            $categories = $this->categorieService->findByNamespace($namespace);
        }
        else {
            $categories = $this->categorieService->findAll();
        $namespaceC = ($namespace === "Laissé vide !")?"":$namespace;
        if ($namespace !== null AND $namespace !== "") $categories = array_filter($categories, function (CategorieInterface $a) use ($namespaceC) { return $a->getNamespace() == $namespaceC; });
        }

        return new ViewModel([
            'namespaces' => $namespaces,
            'namespace' => $namespace,
            'categories' => $categories,
        ]);
        $title = "Gestion des catégories";
        return compact('title', 'form', 'categories');
    }

    public function ajouterAction() : ViewModel
    {
        $categorie = $this->categorieService->getEntityInstance();
        $form = $this->getCategorieForm();
        $categorie->setOrdre($this->categorieService->getMaxOrdre()+1);
        $form = $this->categorieForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/ajouter', [], [], true));
        $form->bind($categorie);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
        if ($data = $this->params()->fromPost()) {
            $form->setData($data);
            if ($form->isValid()) {
                $this->getCategorieService()->create($categorie);
                try {
                    $this->categorieService->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()));
                }
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('unicaen-privilege/default/default-form');
        $vm->setVariables([
            'title' => "Ajout d'une nouvelle catégorie de privilège",
        $view = new ViewModel();
        $view->setTemplate('unicaen-privilege/categorie/template/form-categorie');
        $view->setVariables([
            'title' => "Ajout d'une nouvelle catégorie",
            'form' => $form,
        ]);
        return $vm;

        return $view;
    }

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

        return new ViewModel([
            'categorie' => $categorie,
        ]);
        return compact('title', 'categorie', 'privileges');
    }

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

        return new ViewModel([
            'title' => "Affichage du fichier fournissant la déclaration des privilèges",
            'categorie' => $categorie,
        ]);
        return compact('categorie');
    }

    public function modifierAction() : ViewModel
    {
        $categorie = $this->getCategorieService()->getRequestedCategorie($this);
        $form = $this->getCategorieForm();
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $form = $this->categorieForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/modifier', ['categorie' => $categorie->getId()], [], true));
        $form->bind($categorie);
        $form->setOldLibelle($categorie->getLibelle());
        $form->setOldCode($categorie->getCode());

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
        if ($data = $this->params()->fromPost()) {
            $form->setData($data);
            if ($form->isValid()) {
                $this->getCategorieService()->update($categorie);
                try {
                    $this->categorieService->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()));
                }
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('unicaen-privilege/default/default-form');
        $vm->setVariables([
            'title' => "Modification d'une catégorie de privilège",
        $view = new ViewModel();
        $view->setTemplate('unicaen-privilege/categorie/template/form-categorie');
        $view->setVariables([
            'title' => "Modification de la catégorie",
            'form' => $form,
        ]);
        return $vm;

        return $view;
    }

    public function supprimerAction() : ViewModel {
        $categorie = $this->getCategorieService()->getRequestedCategorie($this);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            if ($data["reponse"] === "oui") $this->getCategorieService()->delete($categorie);
            exit();
    public function supprimerAction() : array
    {
        try {
            $categorie = $this->categorieService->getRequestedCategorie($this);
            $this->categorieService->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()));
        }

        $vm = new ViewModel();
        if ($categorie !== null) {
            $vm->setTemplate('unicaen-privilege/default/confirmation');
            $vm->setVariables([
                'title' => "Suppression de la Catégorie de privilège  de " . $categorie->getLibelle(),
                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
                'action' => $this->url()->fromRoute('unicaen-privilege/categorie/supprimer', ["categorie" => $categorie->getId()], [], true),
            ]);
        }
        return $vm;
        return compact('categorie');
    }
}
 No newline at end of file
+19 −7
Original line number Diff line number Diff line
@@ -3,26 +3,38 @@
namespace UnicaenPrivilege\Controller;

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

class CategorieControllerFactory {

    public function __invoke(ContainerInterface $container) : CategorieController
class CategorieControllerFactory
{
    /**
         * @var CategorieService $categorieService
     * Create controller
     *
     * @param ContainerInterface $container
     * @param string $requestedName
     * @param array|null $options
     * @return CategorieController|object
     */
        $categorieService = $container->get(CategorieService::class);

    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        /**
         * @var CategorieForm $categorieForm
         * @var CategorieService $categorieService
         * @var PrivilegeService $privilegeService
         */
        $categorieService = $container->get(CategorieService::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->setPrivilegeService($privilegeService);
        $controller->setCategorieForm($categorieForm);
        $controller->setCategorieFiltreForm($categorieFiltreForm);

        return $controller;
    }
}
 No newline at end of file
+55 −55
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace UnicaenPrivilege\Controller;

use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
@@ -17,109 +18,108 @@ class PrivilegeController extends AbstractActionController
    use PrivilegeServiceAwareTrait;
    use RoleServiceAwareTrait;
    use PrivilegeFormAwareTrait;
    use CategorieFiltreFormAwareTrait;

    public function indexAction() : array
    {
        $namespaces = $this->categorieService->listerNamespaces();
        $form = $this->categorieFiltreForm;
        $namespace = $this->params()->fromQuery('namespace');
        if($namespace) {
            $form->get('namespace')->setValue($namespace);
        }

        $roles = $this->roleService->findAll();
        $privileges = $this->privilegeService->getPrivilegesByCategorie($namespace);
        $privilegesByCategorie = $this->privilegeService->listByCategorie($namespace);

        return compact('roles', 'privileges', 'namespaces');
        $title = "Attribution des privilèges";
        return compact('title', 'form', 'roles', 'privilegesByCategorie');
    }

    public function ajouterAction() : ViewModel
    {
        $categorie = $this->categorieService->getRequestedCategorie($this);
        $privilege = $this->privilegeService->getEntityInstance();
        $form = $this->getPrivilegeForm();
        $privilege->setOrdre($this->privilegeService->getMaxOrdreByCategorie($categorie)+1);
        $privilege->setCategorie($categorie);
        $form = $this->privilegeForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/ajouter', ['categorie' => $categorie->getId()], [], true));
        $form->bind($privilege);
        $form->setCategorie($categorie);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
        if ($data = $this->params()->fromPost()) {
            $form->setData($data);
            if ($form->isValid()) {
                $privilege->setCategorie($categorie);
                $this->getPrivilegeService()->create($privilege);
                try {
                    $this->privilegeService->create($privilege);
                    $this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> créé avec succès.", $privilege->getLibelle()));
                } catch (Exception $e) {
                    $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la création du privilège <strong>%s</strong>.", $privilege->getLibelle()));
                }
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('unicaen-privilege/default/default-form');
        $vm->setVariables([
        $view = new ViewModel();
        $view->setTemplate('unicaen-privilege/privilege/template/form-privilege');
        $view->setVariables([
            'title' => "Ajout d'un nouveau privilège",
            'form' => $form,
        ]);
        return $vm;

        return $view;
    }

    public function modifierAction() : ViewModel
    {
        $privilege = $this->getPrivilegeService()->getRequestedPrivilege($this);
        $form = $this->getPrivilegeForm();
        $privilege = $this->privilegeService->getRequestedPrivilege($this);
        $form = $this->privilegeForm;
        $form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/modifier', ['privilege' => $privilege->getId()], [], true));
        $form->bind($privilege);
        $form->setCategorie($privilege->getCategorie());
        $form->setOldLibelle($privilege->getLibelle());
        $form->setOldCode($privilege->getCode());

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();

        if ($data = $this->params()->fromPost()) {
            $form->setData($data);
            if ($form->isValid()) {
                $this->getPrivilegeService()->update($privilege);
                try {
                    $this->privilegeService->update($privilege);
                    $this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> modifié avec succès.", $privilege->getLibelle()));
                } catch (Exception $e) {
                    $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la modification du privilège <strong>%s</strong>.", $privilege->getLibelle()));
                }
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('unicaen-privilege/default/default-form');
        $vm->setVariables([
            'title' => "Modification d'un privilège",
        $view = new ViewModel();
        $view->setTemplate('unicaen-privilege/privilege/template/form-privilege');
        $view->setVariables([
            'title' => "Modification privilège",
            'form' => $form,
        ]);
        return $vm;

        return $view;
    }

    public function affecterAction()
    public function attribuerAction(): ViewModel
    {
        $privilege = $this->privilegeService->getRequestedPrivilege($this);
        $role = $this->roleService->getRequestedRole($this);
        $this->privilegeService->toggle($role,$privilege);

        $value = $this->privilegeService->toggle($role,$privilege);
        $viewModel = new ViewModel();
        $viewModel
            ->setVariables(compact('privilege', 'role'))
            ->setTerminal(true);

        return new JsonModel([
            'value' => $value,
        ]);
        return $viewModel;
    }

    public function supprimerAction() : ViewModel
    public function supprimerAction() : array
    {
        $privilege = $this->getPrivilegeService()->getRequestedPrivilege($this);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            if ($data["reponse"] === "oui") $this->getPrivilegeService()->delete($privilege);
            exit();
        try {
            $privilege = $this->privilegeService->getRequestedPrivilege($this);
            $this->privilegeService->delete($privilege);
            $this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> supprimé avec succès.", $privilege->getLibelle()));
        } catch (Exception $e) {
            $this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la suppression du privilège <strong>%s</strong>.", $privilege->getLibelle()));
        }

        $vm = new ViewModel();
        if ($privilege !== null) {
            $vm->setTemplate('unicaen-privilege/default/confirmation');
            $vm->setVariables([
                'title' => "Suppression du privilège " . $privilege->getLibelle(),
                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
                'action' => $this->url()->fromRoute('unicaen-privilege/supprimer', ["privilege" => $privilege->getId()], [], true),
            ]);
        }
        return $vm;
        return compact('privilege');
    }
}
 No newline at end of file
Loading