Code

Centralized copy & paste ACL checks.
[gosa.git] / gosa-core / plugins / admin / acl / class_aclRole.inc
index f77c9361fce4477f9a9809151174c614f27b954e..2f90c41900d5a5467948e1659901ff33d8cb1757 100644 (file)
@@ -51,6 +51,7 @@ class aclrole extends acl
   var $cn = "";
   var $description = "";
   var $orig_dn;
+  var $orig_base;
   var $base ="";
 
   function aclrole (&$config,  $dn= NULL)
@@ -136,6 +137,8 @@ class aclrole extends acl
 
     /* Finally - we want to get saved... */
     $this->is_account= TRUE;
+    $this->orig_base = $this->base;
+    $this->orig_dn = $this->dn;
   }
 
 
@@ -706,6 +709,29 @@ class aclrole extends acl
         ));
   }
 
+  function check()
+  {
+    $message = plugin::check();
+
+    if(empty($this->cn)){
+      $message[] = msgPool::required(_("Name"));
+    }
+   
+    if(!count($this->gosaAclTemplate)){
+      $message[] = msgPool::required(_("ACL"));
+    }
+    /* Check if we are allowed to create or move this object
+     */
+    if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){
+      $message[] = msgPool::permCreate();
+    }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){
+      $message[] = msgPool::permMove();
+    }
+
+    return($message);
+  }
+
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: