roles multiples possible par user, administrables
[mtweb] / mw / env / modules / mw_env_run.php
index 51b6330..31242f5 100644 (file)
     }
 
     function status_ok($etat, $CHECK_FORMAT = true){
-      $OK = $this->config("default_allow");
       $data = $this->data();
       if($CHECK_FORMAT) $etat = $this->valid_etat($etat);
-      if($etat !== false){
-        if(($user_status = $data->get_user_status()) !== false){
-          if(
-            (
-              $action_status = $data->get_action_status(
-                $etat["mod"],
-                $etat["controller"],
-                $etat["action"]
-              )
-            ) !== false
-          ){
-            $action = $etat["mod"]."/".$etat["controller"]."/".$etat["action"];
-            if(isset($action_status[$action])){
-              $OK =
-                   (isset($action_status[$action][0]) && $action_status[$action][0])
-                || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]);
-            }
-            else{
-              $action = $etat["mod"]."/".$etat["controller"];
-              if(isset($action_status[$action])){
-                $OK =
-                     (isset($action_status[$action][0]) && $action_status[$action][0])
-                  || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]);
-              }
-              else{
-                $action = $etat["mod"];
-                if(isset($action_status[$action])){
-                  $OK =
-                       (isset($action_status[$action][0]) && $action_status[$action][0])
-                    || (isset($action_status[$action][$user_status]) && $action_status[$action][$user_status]);
-                }
-              }
-            }
+      if($etat === false){
+        $this->erreur("etat invalide");
+        return false;
+      }
+      if(($user_status = $data->get_user_status()) === false){
+        $this->erreur("Impossible de lire les roles de l'utilisateur courant");
+        return false;
+      }
+      if(!$user_status){
+        $this->erreur("L'utilisateur courant n'a aucun role");
+        return false;
+      }
+      if(
+        (
+          $action_status = $data->get_action_status(
+            $etat["mod"],
+            $etat["controller"],
+            $etat["action"]
+          )
+        ) === false
+      ){
+        $this->erreur("Impossible de lire les status des actions en base");
+        return false;
+      }
+      foreach($user_status as $id_role){
+        $OK = $this->config("default_allow");
+        $action = $etat["mod"];
+        if(isset($action_status[$action])){
+          $OK =
+               (isset($action_status[$action][0]) && $action_status[$action][0])
+            || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]);
+        }
+        if(!$OK){
+          $action = $etat["mod"]."/".$etat["controller"];
+          if(isset($action_status[$action])){
+            $OK =
+                 (isset($action_status[$action][0]) && $action_status[$action][0])
+              || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]);
+          }
+        }
+        if(!$OK){
+          $action = $etat["mod"]."/".$etat["controller"]."/".$etat["action"];
+          if(isset($action_status[$action])){
+            $OK =
+                 (isset($action_status[$action][0]) && $action_status[$action][0])
+              || (isset($action_status[$action][$id_role]) && $action_status[$action][$id_role]);
           }
-          else $this->erreur("Impossible de lire les status des actions en base");
         }
-        else $this->erreur("Impossible de lire le statut de l'utilisateur courant");
+        if($OK) break;
       }
-      else $this->erreur("etat invalide");
       return $OK;
     }