BugReport : plateforme de remontée d'incidents
Documentations techniques - Sommaire :
- Gestion des Droits
Documentations de supports- Sommaire :
Documentations de tests - Sommaire :
Gestion des droits
1- Fonctionnalités
2- Variables de session ($_SESSION)
Nom | Type | Descriptif |
---|---|---|
$_SESSION["selectedModules1"] | Tableau d'entiers | Ids des modules sélectionnés |
$_SESSION["selectedGroupes1"] | Tableau d'entiers | Ids des groupes sélectionnés |
$_SESSION["selectedModules2"] | Tableau d'entiers | Ids des modules sélectionnés |
$_SESSION["selectedDroits2"] | Tableau d'entiers | Ids des droits sélectionnés |
$_SESSION["selectedGroupes2"] | Tableau d'entiers | Ids des groupes sélectionnés |
$_SESSION["ckAllGM"] | Booléen | valeur de la checkbox ckAll |
3- Classes métiers
4- Vues
4.1 vDroits
<div id="choixd"> <form id="frmAddGroup" name="frmAddGroup" onsubmit="return false;"> <fieldset> <legend>Gestion des droits</legend> <input type="radio" name="choix" id="choixG" value="groupe" checked> Par groupes<br> <input type="radio" name="choix" id="choixM" value="module"> Par modules<br> </fieldset> </form> </div> <?php echo $data["js"];
4.2 vDroitsParGroupes
<div id="droitparGroupe"> <fieldset class="cadre"> <legend> Gestion des droits par les groupes :</legend> <table width="100%" > <td width="50%" style="background:#ffffff"> <fieldset class="cadre"> <legend> Groupes :</legend> <table id="groupesTable" style="float:left"> <?php Gui::show($data["groupes"],"droitGroupe")?> </table> </fieldset> </td> <td width="50%" style="background:#ffffff"> <fieldset class="cadre"> <legend> Modules :</legend> <table id="modulesTable" > <?php Gui::show($data["modules"],"droitModule")?> </table> </fieldset> </td> </table> <div id="multi"><b>Pour la sélection :</b> <a href="#" class="add" id="btAddModuleGroupe" name="btAddModuleGroupe" title="Affecter les modules sélectionnées">Affecter</a> <a href="#" class="delete" id="btDeleteModuleGroupe" name="btDeleteModuleGroupe" title="Supprimer les relations sélectionnées">Supprimer</a> </div> </div> </fieldset> </div> <?php echo $data["js"];?>
4.3 vDroitParModules
<div id="droitparGroupe"> <fieldset class="cadre"> <legend> Gestion des droits par les modules :</legend> <table width="100%" > <td width="50%" style="background:#ffffff"> <fieldset class="cadre"> <legend> Modules :</legend> <table id="groupesTable" style="float:left"> <?php Gui::show($data["modules"],"droitModule")?> </table> </fieldset> </td> <td width="50%" style="background:#ffffff"> <fieldset class="cadre"> <legend> Groupes :</legend> <table id="modulesTable" > <?php Gui::show($data["groupes"],"droitGroupe")?> </table> </fieldset> </td> </table> <div id="multi"><b>Pour la sélection :</b> <a href="#" class="add" id="btAddGroupeModule" name="btAddGroupeModule" title="Affecter les modules sélectionnées">Affecter</a> </div> </div> </fieldset> </div> <?php echo $data["js"];?>
5- Contrôleur
5.1 cDroit/index
Fonctionnalité | Descriptif |
---|---|
Gestion des Droits | Contrôleur de gestion des Droits |
Appel du contrôleur refresh |
public function index(){ $this->refresh(); }
5.2 cDroit/refresh
Fonctionnalité | Descriptif |
---|---|
Liste des droits | Utilisé pour l'affichage initial et le rafraîchissement après une modification |
Mise en place logique client
#operation -> show
#choixG -> choix par groupe
#choixM -> choix par module
|
|
Passage de variables($data[]) et affichage de la vue vDroits |
public function refresh(){ $js=JsUtils::doSomethingOn("#operation", "show"); $js.=JsUtils::get("cDroit/parGroupe","{}","#operation"); $js.=JsUtils::postAndBindTo("#choixG", "click", "cDroit/parGroupe", '{}', "#operation",NULL,"value"); $js.=JsUtils::postAndBindTo("#choixM", "click", "cDroit/parModule", '{}', "#operation",NULL,"value"); $js.=JsUtils::doSomeThingAndBindTo("#choixG", "click", "#operation2","hide",200); $js.=JsUtils::doSomeThingAndBindTo("#choixM", "click", "#operation2","hide",200); $js.=JsUtils::doSomeThingAndBindTo("#choixG", "click", "#operation3","hide",200); $js.=JsUtils::doSomeThingAndBindTo("#choixM", "click", "#operation3","hide",200); $data=array("js"=>$js); $this->loadView("vDroits", $data); }
5.3 cDroit/parGroupe
Fonctionnalité | Descriptif |
---|---|
Liste des applications | Utilisé pour l'affichage par groupe |
Chargement des groupes et des modules $apps | |
Application de la sélection ddes groupes et des modules | |
Mise en place logique client
.ckGroupe -> cDroit/selectGroupeModule
.ckModule -> cDroit/selectGroupeModule
#btAddModuleGroupe -> bouton d'affectation de module a un groupe
#btDeleteModuleGroupe -> bouton de désaffectation d'un module a un groupe
|
|
Passage de variables($data[]) et affichage de la vue vDroitsParGroupes |
public function parGroupe(){ // On charge les groupes et les modules $groupes=DAO::getAll("Groupe"); $modules=DAO::getAll("Module"); // On applique la sélection de groupe et de modules $selectedGroupes1=SessionUtils::getArray("selectedGroupes1"); $selectedModules1=SessionUtils::getArray("selectedModules1"); $js=JsUtils::getAndBindTo(".ckGroupe", "click", "cDroit/selectGroupeModule","{}","#message"); $js.=JsUtils::setChecked("ckGroupe", $selectedGroupes1); $js.=JsUtils::doSomeThingAndBindTo(".ckGroupe", "click", "#operation2","show",200); $js.=JsUtils::doSomeThingAndBindTo(".ckGroupe", "click", "#operation3","hide",200); $js.=JsUtils::getAndBindTo(".ckModule", "click", "cDroit/selectGroupeModule","{}","#message"); $js.=JsUtils::setChecked("ckModule", $selectedModules1); $js.=JsUtils::doSomeThingAndBindTo(".ckModule", "click", "#operation2","show",200); $js.=JsUtils::doSomeThingAndBindTo(".ckModule", "click", "#operation3","hide",200); $js.=JsUtils::postAndBindTo("#btAddModuleGroupe", "click", "cDroit/addModuleGroupe","{}","#message"); $js.=JsUtils::postAndBindTo("#btDeleteModuleGroupe", "click", "cDroit/deleteConfModuleGroupe","{}","#operation3"); $js.=JsUtils::doSomeThingAndBindTo("#btDeleteModuleGroupe", "click", "#operation3","show",200); if((!empty($selectedGroupes1)) AND (!empty($selectedModules1))){ echo JsUtils::doSomethingOn("#multi", "show"); }else{ echo JsUtils::doSomethingOn("#multi", "hide"); } $data=array("js"=>$js,"groupes"=>$groupes,"modules"=>$modules); $this->loadView("vDroitsParGroupes", $data); }
5.4 cDroit/selectGroupeModule
Fonctionnalité | Descriptif |
---|---|
nombre de modules/groupes sélectionnés | Permet de compter le nombre de modules/groupes sélectionnés |
Si Groupe est sélectionné | |
On compte le nombre de groupes sélectionnés
On affiche le nombre de groupes sélectionnés
|
|
Sinon Module est sélectionné | |
On compte le nombre de modules sélectionnés
On affiche le nombre de modules sélectionnés
|
public function selectGroupeModule($id){ if(preg_match("#^ckGroupe#",$id[0])){ $id=str_replace("ckGroupe", "", $id[0]); if(is_numeric($id)){ SessionUtils::addOrRemoveValueFromArray("selectedGroupes1", $id); echo JsUtils::get("cDroit/verificationEtAffichageGroupe","{}","#operation2"); $nb=sizeof($_SESSION["selectedGroupes1"]); echo Gui::pluriel("groupe selectionne", "groupes selectionnes", $nb); } }else{ $id=str_replace("ckModule", "", $id[0]); if(is_numeric($id)){ SessionUtils::addOrRemoveValueFromArray("selectedModules1", $id); echo JsUtils::get("cDroit/verificationEtAffichageGroupe","{}","#operation2"); $nb=sizeof($_SESSION["selectedModules1"]); echo Gui::pluriel("module selectionne", "modules selectionnes", $nb); } } }
5.5 cDroit/selectRelationGroupeModule
Fonctionnalité | Descriptif |
---|---|
Supprimer la relation module/groupe | Permet de supprimer la sélection de module(s) attribué(s) à un groupe |
$ckDroit-> le module est sélectionné | |
On charge les droits correspondants
On affiche l'interface
|
public function selectRelationGroupeModule($id){ $ckDroit=str_replace("idModule", "", $id[0]); $ckDroit=substr($ckDroit, 0, 1); if(is_numeric($ckDroit)){ $selectedDroits1=$_SESSION['selectedDroits1']; SessionUtils::addOrRemoveValueFromArray("selectedDroits1", $id); $nb=sizeOf($selectedDroits1); if(!empty($_SESSION["selectedDroits1"])){ $retour="<div class='cadre'>"; $retour.="<b>Pour la sélection :</b> "; $retour.= "<a href='#' class='delete' id='btDeleteGroupeModule' name='btDeleteGroupeModule' title='Supprimer les relations sélectionnées'>Supprimer la ou les relations sélectionnée(s)</a> "; $retour.="</div>"; echo $retour; echo JsUtils::postAndBindTo(".delete", "click", "cDroit/deleteConfGroupeModule","{}","#operation4"); echo JsUtils::doSomeThingAndBindTo(".delete", "click", "#operation4","show",200); }else{ echo JsUtils::doSomethingOn("#operation3", "hide"); } } }
5.6 cDroit/verificationEtAffichageGroupe
Fonctionnalité | Descriptif |
---|---|
Affichage des modules affectés aux groupes | Permet d'afficher tous les modules affectés pour chaque groupe |
Si Groupe est sélectionné | |
On charge les id des groupes
On charge les id des modules affectés aux groupes
|
public function verificationEtAffichageGroupe(){ $groupes=$_SESSION["selectedGroupes1"]; if(!empty($groupes)){ $retour="<div id='modulesGroupe'>"; $retour.="<fieldset class='cadre'>"; $retour.="<legend> Affichage des module(s) par groupe(s) : :</legend><br>"; foreach($groupes as $groupe){ $infosGroupe=DAO::getAll("Groupe","id=".$groupe); $monGroupe=DAO::getOne("Groupe","id=".$groupe); $modulesGroupe=DAO::getManyToMany($monGroupe,"modules"); foreach ($infosGroupe AS $infos){ if($modulesGroupe){ $retour.="<table border='1' id='moduleTable'"; $retour.="<tr><td colspan='2' bgcolor='#E6E6F7' align=center>".$infos->getLibelle()."</td></tr>"; foreach($modulesGroupe as $module) { $retour.="<tr><td class='element'><span title='Modifier...' class='update' id='update".$module->getId()."'> ".$module->toString()."<span></td></tr>"; } $retour.=" </table>"; $retour.="<br><br>"; } } } $retour.="</fieldset>"; $retour.="</div>"; echo $retour; } if((!empty($groupes)) AND (!empty($_SESSION["selectedModules1"]))){ echo JsUtils::doSomethingOn("#multi", "show"); }else{ echo JsUtils::doSomethingOn("#multi", "hide"); } }
5.7 cDroit/addGroupeModule
Fonctionnalité | Descriptif |
---|---|
Ajoute un module au groupe | Permet d'affecter un module au groupe |
On charge les groupes sélectionnés
On charge les modules sélectionnés
On ajoute un droit pour chaque groupe de chaque module sélectionné
On affiche le nombre de modules afféctés
|
public function addModuleGroupe(){ if($_SERVER['REQUEST_METHOD']=='POST'){ $groupes=$_SESSION["selectedGroupes2"]; $modules=$_SESSION["selectedModules2"]; foreach($modules as $module){ foreach($groupes as $groupe){ $droit=new Droit(); $droit->setIdGroupe($groupe); $droit->setIdModule($module); DAO::insert($droit); echo JsUtils::get("cDroit/verificationEtAffichageModule","{}","#modulesGroupe"); } } $nb=sizeof($modules); echo Gui::pluriel("module ajoute", "modules ajoutes", $nb); } }
5.8 cDroit/deleteConfModuleGroupe
Fonctionnalité | Descriptif |
---|---|
Supprime une relation module/groupe | Permet de supprimer une relation module/groupe |
On charge l'id du module
On charge les modules sélectionnés
On affiche l'interface
On affiche le message de confirmation de suppression de la relation
|
public function deleteConfModuleGroupe($id){ $idModule=str_replace("idGroupe", "", $id[0]); $idModule=substr($idModule, 0, 1); if(is_numeric($idModule)){ echo "<div class='cadre'>Souhaitez vous supprimer cette relation ? <a id='confirmDelete".$id[0]."' href='#' class='accept'>Confirmer la suppression</a>"; echo "<a id='cancelDelete' href='#' class='cancel'>Annuler</a>"; echo JsUtils::getAndBindTo("#confirmDelete".$id[0], "click", "cDroit/deleteModuleGroupe/".$id[0],"{}","#message"); }else{ echo "<div class='cadre'>Souhaitez vous supprimer les relations sélectionnés ? <a id='confirmDelete".$id."' href='#' class='accept'>Confirmer la suppression</a>"; echo "<a id='cancelDelete' href='#' class='cancel'>Annuler</a>"; echo JsUtils::getAndBindTo("#confirmDelete".$id, "click", "cDroit/deleteMultiModuleGroupe/".$id,"{}","#message"); } echo JsUtils::doSomethingOn("#operation4", "show",400); echo JsUtils::doSomeThingAndBindTo("#cancelDelete", "click", "#operation4", "hide",200,JsUtils::_setHtml("#message","Suppression annule")); }
5.9 cDroit/deleteModuleGroupe
Fonctionnalité | Descriptif |
---|---|
Supprime une relation module/groupe | Permet de supprimer une relation module/groupe |
On charge l'id du module
On charge l'id du groupe
On supprime le droit
On affiche le message de confirmation de suppression du droit
|
public function deleteModuleGroupe($id){ $id=str_replace("idGroupe", "", $id[0]); $ids=explode("idModule",$id); $idGroupe=$ids[0]; $idModule=$ids[1]; $droit=new Droit(); $droit->setIdModule($idModule); $droit->setIdGroupe($idGroupe); if(DAO::delete($droit)){ SessionUtils::removeValueFromArray("selectedDroits2", $id); Gui::showOne($droit); echo " supprime"; echo JsUtils::get("cDroit/verificationEtAffichageModule","{}","#modulesGroupe"); }else { echo "Suppression impossible"; } echo JsUtils::doSomethingOn("#operation4", "hide",200); }
5.10 cDroit/deleteMultiModuleGroupe
Caractéristiques similaires a la méthode précédentes, mais avec plusieurs groupes/modules
public function deleteMultiModuleGroupe(){ $relations=$_SESSION["selectedDroits2"]; $nb=0; foreach($relations as $relation){ $params=str_replace("idGroupe", "", $relation[0]); $params=explode("idModule",$params); $idGroupe=$params[0]; $idModule=$params[1]; $droit=new Droit(); $droit->setIdGroupe($idGroupe); $droit->setIdModule($idModule); if(DAO::delete($droit)){ SessionUtils::removeValueFromArray("selectedDroits2", $relation); $nb++; } } echo JsUtils::get("cDroit/verificationEtAffichageModule","{}","#modulesGroupe"); echo Gui::pluriel("relation supprime", "relations supprimes", $nb); echo JsUtils::doSomethingOn("#operation4", "hide",200); echo JsUtils::doSomethingOn("#operation3", "hide",200); }