X-Git-Url: http://git.dj3c1t.com/index.cgi?a=blobdiff_plain;f=mw%2Fapp%2Fmods%2Fconfig%2Froles.php;fp=mw%2Fapp%2Fmods%2Fconfig%2Froles.php;h=16774cb315e11117dc9398c47bfa502f7606b4a7;hb=5dfe5e84a7007ddd9737707ce15f0155e6415066;hp=0000000000000000000000000000000000000000;hpb=568c721d53fb84b5e9b3facb2addccaf6deb35f9;p=mtweb diff --git a/mw/app/mods/config/roles.php b/mw/app/mods/config/roles.php new file mode 100644 index 0000000..16774cb --- /dev/null +++ b/mw/app/mods/config/roles.php @@ -0,0 +1,150 @@ +data(); + if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles"; + return true; + } + + function index(&$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); + } + + function set_default_allow(&$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" + ); + } + + function add_role(&$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); + } + + function edit_role(&$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); + } + + function save_role(&$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" + ); + } + + function del_role(&$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"); + } + + } + +?> \ No newline at end of file