return true;
}
+ // ------------------------------------------------------------------------------------
+ // utilisateurs
+ //
+
function index(&$env){
$data = $env->data();
+ if($this->status) $env->set_out("status", $this->status);
+ else{
+ $env->erreur("impossible de lire la liste des status");
+ return;
+ }
if(
- $env->set_out(
- "users",
- $data->users(
+ ( $users = $data->users(
isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0,
isset($_GET[$env->param("alpha")]) ? $_GET[$env->param("alpha")] : null,
isset($_GET[$env->param("status")]) ? $_GET[$env->param("status")] : null
)
) !== false
){
- if($this->status){
- $env->set_out("status", $this->status);
- }
- else $env->erreur("impossible de lire la liste des status");
+ $env->set_out("users", $users);
}
else $env->erreur("impossible de lire la liste des utilisateurs");
}
$data = $env->data();
if($this->status){
$env->set_out("status", $this->status);
- $env->set_out("user", array("status" => $data->creation_default_status()));
+ $user = array(
+ "login" => "",
+ "email" => "",
+ "status" => array()
+ );
if($_POST){
- $env->set_out("user", $_POST);
+ $VALID = true;
if($_POST["login"]){
- if(($exists = $data->user($_POST["login"])) !== false){
- if(!$exists){
- $VALID = true;
- if(!$_POST["email"]){
- $env->message("merci de preciser un email");
- $VALID = false;
- }
- if(!$_POST["password"]){
- $env->message("merci de preciser un mot de passe");
- $VALID = false;
- }
- if($_POST["password"] != $_POST["password_confirm"]){
- $env->message("la confirmation du mot de passe est incorrecte");
- $VALID = false;
- }
- if($VALID){
- if(
- $data->add_user(
- $_POST["login"],
- md5($_POST["password"]),
- $_POST["email"],
- $_POST["status"]
- )
- ){
- $env->redirect(
- $env->url("admin/users"),
- "l'utilisateur <strong>".$_POST["login"]."</strong> a été ajouté"
- );
- }
- else $env->erreur("Impossible d'ajouter l'utilisateur");
- }
+ $user["login"] = $_POST["login"];
+ }
+ else{
+ $env->message("merci de préciser un login");
+ $VALID = false;
+ }
+ if(($exists = $data->user($_POST["login"])) !== false){
+ if($exists){
+ $env->message("ce login existe déjà");
+ $VALID = false;
+ }
+ }
+ else{
+ $env->erreur("impossible de savoir si cet login existe déjà");
+ return;
+ }
+ if($_POST["email"]) $user["email"] = $_POST["email"];
+ else{
+ $env->message("merci de preciser un email");
+ $VALID = false;
+ }
+ if($_POST["password"]){
+ if($_POST["password"] == $_POST["password_confirm"]) $user["password"] = md5($_POST["password"]);
+ else{
+ $env->message("la confirmation du mot de passe est incorrecte");
+ $VALID = false;
+ }
+ }
+ else{
+ $env->message("merci de preciser un mot de passe");
+ $VALID = false;
+ }
+ $user["status"] = array();
+ foreach($_POST as $key => $value){
+ if(substr($key, 0, 7) == "status_"){
+ $id_role = substr($key, 7);
+ if(preg_match("/^[0-9]+$/", $id_role)){
+ $user["status"][] = $id_role;
}
- else $env->message("ce login existe déjà");
}
- else $env->erreur("impossible de savoir si cet login existe déjà");
}
- else $env->message("merci de préciser un login");
+ if($VALID){
+ if(
+ $data->add_user(
+ $user["login"],
+ $user["password"],
+ $user["email"],
+ $user["status"]
+ )
+ ){
+ $env->redirect(
+ $env->url("admin/users/edit", array("id" => $user["login"])),
+ "l'utilisateur <strong>".$_POST["login"]."</strong> a été ajouté"
+ );
+ }
+ else $env->erreur("Impossible d'ajouter l'utilisateur");
+ }
}
+ $env->set_out("user", $user);
}
else $env->erreur("impossible de lire la liste des status");
}
$data = $env->data();
if($this->status){
$env->set_out("status", $this->status);
- if($env->set_out("user", $data->user($_GET[$env->param("id")]))){
+ if($user = $data->user($_GET[$env->param("id")])){
if($_POST){
- $user = $env->out("user");
- $id = $user["id"];
- $login = $user["login"];
- $password = $user["password"];
- $_POST["login"] = $login;
- $env->set_out("user", $_POST);
$VALID = true;
- if(!$_POST["email"]){
+ if($_POST["email"]) $user["email"] = $_POST["email"];
+ else{
$env->message("merci de preciser un email");
$VALID = false;
}
$env->message("la confirmation du mot de passe est incorrecte");
$VALID = false;
}
+ if($VALID) $user["password"] = md5($_POST["password"]);
+ }
+ $user["status"] = array();
+ foreach($_POST as $key => $value){
+ if(substr($key, 0, 7) == "status_"){
+ $id_role = substr($key, 7);
+ if(preg_match("/^[0-9]+$/", $id_role) && isset($this->status[$id_role])){
+ $user["status"][] = $id_role;
+ }
+ }
}
if($VALID){
if(
$data->set_user(
- $id,
- $login,
- isset($_POST["change_password"]) && $_POST["change_password"] ? md5($_POST["password"]) : $password,
- $_POST["email"],
- $_POST["status"]
+ $user["id"],
+ $user["login"],
+ $user["password"],
+ $user["email"],
+ $user["status"]
)
)
$env->redirect(
- $env->url("admin/users"),
- "l'utilisateur <strong>".$login."</strong> a été modifié"
+ $env->url("admin/users/edit", array("id" => $user["login"])),
+ "l'utilisateur a été modifié"
);
else $env->erreur("Impossible de mettre à jour l'utilisateur");
}
}
+ $env->set_out("user", $user);
}
else $env->erreur("Impossible de lire les informations de cet utilisateur");
}
else $env->erreur("Impossible de lire les informations de cet utilisateur");
}
+ // ------------------------------------------------------------------------------------
+ // roles
+ //
+
+ 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("admin/users/roles"),
+ "la configuration default_allow a été enregistrée"
+ );
+ }
+
+ function roles(&$env){
+ $data = $env->data();
+ $roles = $data->status();
+ $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0;
+ $env->set_out("id_role", $id_role);
+ if(!isset($roles) || $roles === false){
+ $env->erreur("impossible de lire la liste des roles");
+ return;
+ }
+ $env->set_out("roles", $roles);
+ if(($actions = $data->get_actions($id_role)) === false){
+ $env->erreur("impossible de lire la liste des droits d'acces");
+ return;
+ }
+ $env->set_out("actions", $actions);
+
+ }
+
+ 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("admin/users/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("admin/users/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_status = array();
+ $als = array();
+ foreach($_POST as $key => $value){
+ if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_status[$action] = $role["id"];
+ elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_status[$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_status[$value] = $role["id"];
+ }
+ }
+ foreach($action_status 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("admin/users/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("admin/users/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