6746e6914661373de818d5505890bb86dd0a3859
[mtweb] / mw / app / controllers / config / roles.php
1 <?php
2
3   class mw_config_roles extends mw_controller{
4
5     var $roles;
6
7     function validate(){
8       $env = $this->env();
9       $data = $env->data();
10       if(($this->roles = $data->roles()) === false) return "impossible de lire la liste des roles";
11       return true;
12     }
13
14     function index(){
15       $env = $this->env();
16       $data = $env->data();
17       $roles = $this->roles;
18       $id_role = isset($_GET[$env->param("id")]) && $_GET[$env->param("id")] ? $_GET[$env->param("id")] : 0;
19       if(!isset($roles) || $roles === false){
20         $env->erreur("impossible de lire la liste des roles");
21         return;
22       }
23       if(($actions = $data->get_actions($id_role)) === false){
24         $env->erreur("impossible de lire la liste des droits d'acces");
25         return;
26       }
27       $env->set_out("roles", $roles);
28       $env->set_out("id_role", $id_role);
29       $env->set_out("actions", $actions);
30     }
31
32     function set_default_allow(){
33       $env = $this->env();
34       $default_allow = $_GET[$env->param("id")];
35       if(!isset($default_allow) || ($default_allow !== "0" && $default_allow !== "1")){
36         $env->erreur("parametre default_allow invalide");
37         return;
38       }
39       $data = $env->data();
40       if(!$data->set_config("default_allow", $default_allow)){
41         $env->erreur("impossible de mettre a jour la configuration default_allow");
42         return;
43       }
44       $env->redirect(
45         $env->url("config/roles"),
46         "la configuration default_allow a &eacute;t&eacute; enregistr&eacute;e"
47       );
48     }
49
50     function add_role(){
51       $env = $this->env();
52       $data = $env->data();
53       $role = array(
54         "nom" => "",
55         "intitule" => ""
56       );
57       if($_POST){
58         if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
59         if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
60         if(!$env->messages()){
61           if(($id_role = $data->add_role($role["nom"], $role["intitule"])) !== false){
62             $env->redirect(
63               $env->url("config/roles", array("id" => $id_role)),
64               "le r&ocirc;le a &eacute;t&eacute; enregistr&eacute;"
65             );
66           }
67           else $env->erreur("impossible d'enregistrer les informations du role");
68         }
69       }
70       $env->set_out("role", $role);
71     }
72
73     function edit_role(){
74       $env = $this->env();
75       $data = $env->data();
76       if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
77         $env->erreur("impossible de lire les informations du role");
78         return;
79       }
80       if($_POST){
81         if(!($role["nom"] = $_POST["nom"])) $env->message("merci de preciser un nom");
82         if(!($role["intitule"] = $_POST["intitule"])) $env->message("merci de preciser un intitule");
83         if(!$env->messages()){
84           if($data->set_role($role["id"], $role["nom"], $role["intitule"])){
85             $env->redirect(
86               $env->url("config/roles", array("id" => $role["id"])),
87               "le r&ocirc;le a &eacute;t&eacute; enregistr&eacute;"
88             );
89           }
90           else $env->erreur("impossible d'enregistrer les informations du role");
91         }
92       }
93       $env->set_out("role", $role);
94     }
95
96     function save_role(){
97       $env = $this->env();
98       $data = $env->data();
99       if(!($role = $data->get_role($_POST["id_role"]))){
100         $env->erreur("impossible de lire les informations du role");
101         return;
102       }
103       if(!$data->clear_role_actions($role["id"])){
104         $env->erreur("impossible de supprimer les actions du role");
105         return;
106       }
107       $action_roles = array();
108       $als = array();
109       foreach($_POST as $key => $value){
110         if(substr($key, 0, 7) == "module_" && ($action = substr($key, 7))) $action_roles[$action] = $role["id"];
111         elseif(substr($key, 0, 11) == "controleur_" && ($action = substr($key, 11))) $action_roles[$action] = $role["id"];
112         elseif(substr($key, 0, 3) == "al_" && ($al_index = substr($key, 3))) $als[] = $al_index;
113       }
114       foreach($als as $al_index){
115         $al_prefix = "action_".$al_index."_";
116         $al_prefix_length = strlen($al_prefix);
117         foreach($_POST as $key => $value){
118           if(substr($key, 0, $al_prefix_length) == $al_prefix) $action_roles[$value] = $role["id"];
119         }
120       }
121       foreach($action_roles as $action => $id_role){
122         if(!$data->add_role_action($id_role, $action)){
123           $env->erreur("impossible d'enregistrer les actions du role");
124           return;
125         }
126       }
127       $env->redirect(
128         $env->url("config/roles", array("id" => $role["id"])),
129         "les actions du r&ocirc;le ont &eacute;t&eacute; enregistr&eacute;es"
130       );
131     }
132
133     function del_role(){
134       $env = $this->env();
135       $data = $env->data();
136       if(!isset($_GET[$env->param("id")]) || !($role = $data->get_role($_GET[$env->param("id")]))){
137         $env->erreur("impossible de lire les informations du role");
138         return;
139       }
140       if($data->clear_role_actions($role["id"])){
141         if($data->clear_role_users($role["id"])){
142           if($data->del_role($role["id"])){
143             $env->redirect(
144               $env->url("config/roles"),
145               "le r&ocirc;le a &eacute;t&eacute; effac&eacute;"
146             );
147           }
148           else $env->erreur("impossible de supprimer le role");
149         }
150         else $env->erreur("impossible de supprimer le role aux utilisateurs");
151       }
152       else $env->erreur("impossible de supprimer les actions du role");
153     }
154
155   }
156
157 ?>