Commit 7271492d authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Utilisateur Début d'une page d'administration

parent 042ce6c1
Loading
Loading
Loading
Loading
+21 −0
Changes for module/Application/config/others/utilisateur.config.php: 21 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ use Zend\Mvc\Router\Http\Literal;
use Application\Form\Validator\PasswordValidator;
use Application\Form\Validator\NewEmailValidator;
use Application\Form\Validator\Factory\NewEmailValidatorFactory;
use Zend\Mvc\Router\Http\Segment;

return [
    'bjyauthorize'    => [
@@ -25,6 +26,8 @@ return [
                    'controller' => 'Application\Controller\Utilisateur',
                    'action'     => [
                        'index',
                        'index-bis',
                        'retirer-role',
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_CONSULTATION,
                ],
@@ -126,6 +129,24 @@ return [
                            ],
                        ],
                    ],
                    'individu-index' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/index[/:id]',
                            'defaults'    => [
                                'action' => 'index-bis',
                            ],
                        ],
                    ],
                    'retirer-role' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/retirer-role/:individu/:role',
                            'defaults'    => [
                                'action' => 'retirer-role',
                            ],
                        ],
                    ],

                ],
            ],
+32 −0
Changes for module/Application/src/Application/Controller/UtilisateurController.php: 32 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -347,4 +347,36 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
            'form' => $form,
        ]);
    }

    /**
     * NOTA BENE : il s'agit des individu et non des utilisateurs car ils sont ceux qui portent les rôles
     */
    public function indexBisAction()
    {
        $individu = null;
        $roles = null;

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost()['individu'];
            /** @var Individu $individu */
            $individu = $this->individuService->getIndviduById($data['id']);
            $roles = $this->roleService->getRoleByIndividu($individu);
        }
        return new ViewModel([
            'individu' => $individu,
            'roles' => $roles,
        ]);
    }

    public function retirerRoleAction()
    {
        $individuId = $this->params()->fromRoute('individu');
        $roleId = $this->params()->fromRoute('role');

        $this->roleService->removeRole($individuId, $roleId);

        return new ViewModel([]);
    }
}
 No newline at end of file
+30 −0
Changes for module/Application/src/Application/Service/Role/RoleService.php: 30 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -85,6 +85,21 @@ class RoleService extends BaseService
        return $individuRole;
    }

    public function getRoleByIndividu($individu)
    {
        $qb = $this->getEntityManager()->getRepository(IndividuRole::class)->createQueryBuilder("ir")
            ->andWhere("ir.individu = :individu")
            ->setParameter("individu", $individu);
        $results = $qb->getQuery()->getResult();

        /** @var IndividuRole $result */
        $roles = [];
        foreach($results as $result) {
            $roles[] = $result->getRole();
        }

        return $roles;
    }

    /**
     * @param int $individuRoleId
@@ -219,5 +234,20 @@ class RoleService extends BaseService
        return $role;
    }

    public function removeRole($individuId, $roleId)
    {
        $qb = $this->getEntityManager()->getRepository(IndividuRole::class)->createQueryBuilder("ir")
            ->leftJoin("ir.individu","i")
            ->leftJoin("ir.role","r")
            ->andWhere("i.id = :individuId")
            ->andWhere("r.id = :roleId")
            ->setParameter("individuId", $individuId)
            ->setParameter("roleId", $roleId);
        $result = $qb->getQuery()->getOneOrNullResult();
        if ($result !== null) {
            $this->getEntityManager()->remove($result);
            $this->getEntityManager()->flush($result);
        }
    }

}
 No newline at end of file
+162 −0
Changes for module/Application/view/application/utilisateur/index-bis.phtml: 162 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

use Application\View\Renderer\PhpRenderer;
use UnicaenApp\Form\Element\SearchAndSelect;
use Application\Entity\Db\Individu;
use Application\Entity\Db\Role;

/**
 * PhpRenderer $this
 */

?>


<?php $this->headTitle($this->translate("Utilisateurs")) ?>

<h1 class="page-header"><?php echo $this->translate("Utilisateurs"); ?>
<!--    <span class="badge">--><?php //echo $utilisateurs->getTotalItemCount() ?><!--</span>-->
</h1>

<p>
<?php
    echo "<form method='post'>";
    $sas = new SearchAndSelect('individu');
    $sas->setLabel($this->translate("Recherche d'un individu à ajouter :"));
    $sas->setAttribute('class', 'individu-finder');
    $sas->setAutocompleteSource($this->url('utilisateur/rechercher-individu',[],[],true));
    echo $this->formControlGroup($sas, 'formSearchAndSelect');
    echo "<input type='submit' value='Selectionner'/>";
    echo "</form>";
?>
</p>

<?php if ($individu) { ?>
<div class="box panel panel-info">

    <div class="panel-heading">
        <h2 class="first">
            <?php echo $this->translate("Fiche"); ?>
        </h2>
    </div>

    <div class="panel-body">
        <dl>
            <dt>État civil</dt>
            <dd>
                <?php
                    /** @var Individu $individu */
                    echo $individu->getNomComplet(false, true, true);
                    echo "<br/>";
                    echo $individu->getDateNaissanceToString();
                    echo "<br/>";
                    echo $individu->getNationalite();
                ?>
            </dd>
            <dt>Dernière modification</dt>
            <dd>
                <?php
                    echo $individu->getHistoModification()->format("H:i:s d/m/y");
                    echo "<br/>";
                ?>
            </dd>
        </dl>
    </div>
</div>

<div class="box panel panel-info">

    <div class="panel-heading">
        <h2 class="first">
            <?php echo $this->translate("Rôles"); ?>
        </h2>
    </div>

    <div class="panel-body">
        <dl>
            <dt>Rôles affectés (<?php echo count($roles); ?>)</dt>
            <dd>
                <?php
                    /** @var Role $role */
                foreach($roles as $role) {
                        echo '<span class="remove-role glyphicon glyphicon-remove text-danger" id="'.$individu->getId().'_'.$role->getId().'"></span>';
                        echo '&nbsp;';
                        echo $role->getRoleId();
                        echo "<br/>";
                    }
                ?>
            </dd>
        </dl>
    </div>
</div>



<?php } ?>

<script>
    $(document).ready(function() {
        $(".remove-role").click( function() {
            var id = $(this).attr("id");
            var splits = id.split("_");
            var role = splits[1];
            var individu = splits[0];

            var url = "retirer-role/" + individu + "/" + role;

            $.ajax({
                url : url,
                // beforeSend:
                //     function () {
                //         document.getElementById(id).innerHTML = "<img style='height:40px;' src='css/loading.gif'/>";
                //     },
                // success:
                // function(retour){
                //     var texte = "";
                //     if (retour == 1) texte = "<span class='glyphicon glyphicon-ok text-success'></span>";
                //     else var texte = "<span class='glyphicon glyphicon-remove text-danger'></span>";
                //     document.getElementById(id).innerHTML = texte;
                // }
            });

            alert("clicked on u:" + individu + " r:" + role + "!");

        });
        $("td").click(function() {

            var canModifier =  Boolean(<?php echo $canModifier; ?>);
            if (!canModifier) {
                alert("Vous n'êtes pas autorisé à modifier les privilèges associés à un rôle.");
                return;
            }

            var id = $(this).attr("id");
            var splits = id.split("_");
            var role = splits[1];
            var privilege = splits[0];
            var url = "modifier-privilege/" + role + "/" + privilege;

            $.ajax({
                url : url,
                beforeSend:
                    function () {
                        document.getElementById(id).innerHTML = "<img style='height:40px;' src='css/loading.gif'/>";
                    },
                success:
                    function(retour){
                        var texte = "";
                        if (retour == 1) texte = "<span class='glyphicon glyphicon-ok text-success'></span>";
                        else var texte = "<span class='glyphicon glyphicon-remove text-danger'></span>";
                        document.getElementById(id).innerHTML = texte;
                    }
            });


        });
    });
</script>
<style>
    .remove-role:hover {
        cursor: pointer;
    }
</style>
+1 −0
Changes for module/Application/view/application/utilisateur/retirer-role.phtml: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
<?php echo 1; ?>
 No newline at end of file