Loading module/Application/config/others/utilisateur.config.php +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 Loading @@ -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' => [ Loading @@ -25,6 +26,8 @@ return [ 'controller' => 'Application\Controller\Utilisateur', 'action' => [ 'index', 'index-bis', 'retirer-role', ], 'privileges' => UtilisateurPrivileges::UTILISATEUR_CONSULTATION, ], Loading Loading @@ -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', ], ], ], ], ], Loading module/Application/src/Application/Controller/UtilisateurController.php +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 Loading @@ -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 module/Application/src/Application/Service/Role/RoleService.php +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 Loading @@ -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 Loading Loading @@ -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 module/Application/view/application/utilisateur/index-bis.phtml 0 → 100644 +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 ' '; 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> module/Application/view/application/utilisateur/retirer-role.phtml 0 → 100644 +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 Loading
module/Application/config/others/utilisateur.config.php +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 Loading @@ -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' => [ Loading @@ -25,6 +26,8 @@ return [ 'controller' => 'Application\Controller\Utilisateur', 'action' => [ 'index', 'index-bis', 'retirer-role', ], 'privileges' => UtilisateurPrivileges::UTILISATEUR_CONSULTATION, ], Loading Loading @@ -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', ], ], ], ], ], Loading
module/Application/src/Application/Controller/UtilisateurController.php +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 Loading @@ -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
module/Application/src/Application/Service/Role/RoleService.php +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 Loading @@ -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 Loading Loading @@ -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
module/Application/view/application/utilisateur/index-bis.phtml 0 → 100644 +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 ' '; 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>
module/Application/view/application/utilisateur/retirer-role.phtml 0 → 100644 +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