env(); $data = $env->data(); if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles"; return true; } public function index(){ $env = $this->env(); $data = $env->data(); $roles = $this->roles; $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0; if(!isset($roles) || $roles === false){ $env->erreur("impossible de lire la liste des roles"); return; } if(($actions = $data->get_actions($id_role)) === false){ $env->erreur("impossible de lire la liste des droits d'acces"); return; } $env->set_out("roles", $roles); $env->set_out("id_role", $id_role); $env->set_out("actions", $actions); } public function set_default_allow(){ $env = $this->env(); $default_allow = $_GET[$env->param("id")]; if(!isset($default_allow) || ($default_allow !== "0" && $default_allow !== "1")){ $env->erreur("parametre default_allow invalide"); return; } $data = $env->data(); if(!$data->set_config("default_allow", $default_allow)){ $env->erreur("impossible de mettre a jour la configuration default_allow"); return; } $env->redirect( $env->url("config/roles"), "la configuration default_allow a été enregistrée" ); } public function add_role(){ $env = $this->env(); $data = $env->data(); $role = array( "nom" => "", "intitule" => "" ); if($_POST){ if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom"); if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule"); if(!$env->messages()){ if(($id_role = $data->add_role($role["nom"], $role["intitule"])) !== false){ $env->redirect( $env->url("config/roles", array("id" => $id_role)), "le rôle a été enregistré" ); } else $env->erreur("impossible d'enregistrer les informations du role"); } } $env->set_out("role", $role); } public function edit_role(){ $env = $this->env(); $data = $env->data(); if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){ $env->erreur("impossible de lire les informations du role"); return; } if($_POST){ if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom"); if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule"); if(!$env->messages()){ if($data->set_role($role["id"], $role["nom"], $role["intitule"])){ $env->redirect( $env->url("config/roles", array("id" => $role["id"])), "le rôle a été enregistré" ); } else $env->erreur("impossible d'enregistrer les informations du role"); } } $env->set_out("role", $role); } public function save_role(){ $env = $this->env(); $data = $env->data(); if(!($role = $data->get_role($_POST["id_role"]))){ $env->erreur("impossible de lire les informations du role"); return; } if(!$data->clear_role_actions($role["id"])){ $env->erreur("impossible de supprimer les actions du role"); return; } $action_roles = array(); $als = array(); foreach($_POST as $key => $value){ if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_roles[$action] = $role["id"]; elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_roles[$action] = $role["id"]; elseif(substr($key, 0, 3) == "al_" && ($al_index = substr($key, 3))) $als[] = $al_index; } foreach($als as $al_index){ $al_prefix = "action_".$al_index."_"; $al_prefix_length = strlen($al_prefix); foreach($_POST as $key => $value){ if(substr($key, 0, $al_prefix_length) == $al_prefix) $action_roles[$value] = $role["id"]; } } foreach($action_roles as $action => $id_role){ if(!$data->add_role_action($id_role, $action)){ $env->erreur("impossible d'enregistrer les actions du role"); return; } } $env->redirect( $env->url("config/roles", array("id" => $role["id"])), "les actions du rôle ont été enregistrées" ); } public function del_role(){ $env = $this->env(); $data = $env->data(); if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){ $env->erreur("impossible de lire les informations du role"); return; } if($data->clear_role_actions($role["id"])){ if($data->clear_role_users($role["id"])){ if($data->del_role($role["id"])){ $env->redirect( $env->url("config/roles"), "le rôle a été effacé" ); } else $env->erreur("impossible de supprimer le role"); } else $env->erreur("impossible de supprimer le role aux utilisateurs"); } else $env->erreur("impossible de supprimer les actions du role"); } }