Code

Fixed Problem loading menu -> ACL list wasn't loaded at this position
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 5 Mar 2010 15:40:46 +0000 (15:40 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 5 Mar 2010 15:40:46 +0000 (15:40 +0000)
Added warning/dialog die show misconfigured ACLs

git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@16312 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/include/class_pluglist.inc
gosa-core/include/class_userinfo.inc

index 2709997ed86b1e780e023d74c366e7a45125bff9..80c9a33d981e530f0c4343e887fb11e4f91c4673 100644 (file)
@@ -74,36 +74,14 @@ class pluglist
                $this->info['all']['plDescription']= _("All objects in this category");
                $this->info['all']['plSelfModify']= FALSE;
 
-    // First load the menu plugins and try to register them in the pluglist
-    //  if this fails for some reason, then remove the plugin from the menu.
-    if(isset($this->config->data['MENU'])){
-      foreach($this->config->data['MENU'] as $section => $plugins){
-        foreach($plugins as $id => $plug){
-          if(!$this->registerPlugin($plug)){ 
-            unset($this->config->data['MENU'][$section][$id]); 
-          }
-        }
-      }
-    }
-    
-    // Now load the path menu and try to register the plugins in the pluglist
-    //  if this fails for some reason, then remove the plugin from the menu.
-    if(isset($this->config->data['PATHMENU'])){
-      foreach($this->config->data['PATHMENU'] as $id => $plugin){
-        if(!$this->registerPlugin($plugin)){
-          unset($this->config->data['PATHMENU'][$id]); 
-        } 
-      }
-    }
-
     if(!session::is_set('maxC')){
       session::set('maxC',"RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP");
     }
-
-    // Now generate menu - usually they are cached
-    $this->gen_menu();
-    $this->show_iconmenu();
-    $this->genPathMenu();
+//
+//   // Now generate menu - usually they are cached
+//   $this->gen_menu();
+//   $this->show_iconmenu();
+//   $this->genPathMenu();
   }
 
 
@@ -196,6 +174,19 @@ class pluglist
   function gen_menu()
   {
     if ($this->menu == ""){
+
+      // First load the menu plugins and try to register them in the pluglist
+      //  if this fails for some reason, then remove the plugin from the menu.
+      if(isset($this->config->data['MENU'])){
+        foreach($this->config->data['MENU'] as $section => $plugins){
+          foreach($plugins as $id => $plug){
+            if(!$this->registerPlugin($plug)){ 
+              unset($this->config->data['MENU'][$section][$id]); 
+            }
+          }
+        }
+      }
+
       $cfg= $this->config->data['MENU'];
       $menu = "\n      <div class='navigation'>";
       foreach ($cfg as $headline => $plug){
@@ -264,6 +255,7 @@ class pluglist
     $add_hr =FALSE;
     $this->iconmenu = "";
     if ($this->iconmenu == ""){
+
       $cfg= $this->config->data['MENU'];
       foreach ($cfg as $headline => $plug){
         $col= 0;
@@ -309,6 +301,17 @@ class pluglist
   function genPathMenu()
   {
     if(empty($this->pathMenu)){
+
+      // Now load the path menu and try to register the plugins in the pluglist
+      //  if this fails for some reason, then remove the plugin from the menu.
+      if(isset($this->config->data['PATHMENU'])){
+        foreach($this->config->data['PATHMENU'] as $id => $plugin){
+          if(!$this->registerPlugin($plugin)){
+            unset($this->config->data['PATHMENU'][$id]); 
+          } 
+        }
+      }
+
       $this->pathMenu = 
         "\n        <div class='plugin-path'>".
         "\n          <ul class='path-navigation'>".
index 1b5fac84eb57e51b426f94f8f004acc4d57790e1..45499883e1382b1bb1f85d195ac537d20ea48017 100644 (file)
@@ -359,6 +359,22 @@ class userinfo
       return($ret);
     }
 
+    /* Check for correct category and class values... */
+    if(strpos($object,'/') !== FALSE){
+      list($aclCategory, $aclClass) = split("/", $object);
+    }else{
+      $aclCategory = $object;
+    }
+    if(!isset($this->ocMapping[$aclCategory])){
+      trigger_error("Invalid ACL category '".$aclCategory."'! ({$object})");
+      msg_dialog::display(_("Error"), "Invalid ACL category '".$aclCategory."'! ({$object})", ERROR_DIALOG);
+      return("");
+    }elseif(isset($aclClass) && !in_array($aclClass, $this->ocMapping[$aclCategory])){
+      trigger_error("Invalid ACL class '".$aclClass."'! ({$object})");
+      msg_dialog::display(_("Error"), "Invalid ACL class '".$aclClass."'! ({$object})", ERROR_DIALOG);
+      return("");
+    }
+
     /* Detect the set of ACLs we have to check for this object 
      */
     $adn = $dn;