Code

* Code cleanup for non pre-defined ttag variable
[gosa.git] / include / class_userinfo.inc
index 79e9526793437484a4699054ac3248f1a205e749..0715c700889cf8fd52a10fc31f1bb2d79a4b5705 100644 (file)
@@ -27,6 +27,7 @@ class userinfo
   var $gidNumber= -1;
   var $language= "";
   var $config;
+  var $gosaUnitTag= "";
   var $subtreeACL= array();
 
   /* get acl's an put them into the userinfo object
@@ -34,7 +35,7 @@ class userinfo
   function userinfo($config, $userdn){
     $this->config= $config;
     $ldap= $this->config->get_ldap_link();
-    $ldap->cat($userdn);
+    $ldap->cat($userdn,array('sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage', 'gosaUnitTag'));
     $attrs= $ldap->fetch();
 
     if (isset($attrs['givenName'][0]) && isset($attrs['sn'][0])){
@@ -51,6 +52,10 @@ class userinfo
       $this->language= $attrs['preferredLanguage'][0];
     }
 
+    if (isset($attrs['gosaUnitTag'][0])){
+      $this->gosaUnitTag= $attrs['gosaUnitTag'][0];
+    }
+
     $this->dn= $userdn;
     $this->ip= $_SERVER['REMOTE_ADDR'];
   }
@@ -60,14 +65,21 @@ class userinfo
   {
     $ldap= $this->config->get_ldap_link();
 
+    /* Check if we should include the unittag */
+    $tag= "";
+    if ($this->gosaUnitTag != "" && isset($this->config->current['STRICT_UNITS']) &&
+        preg_match('/TRUE/i', $this->config->current['STRICT_UNITS'])){
+      $tag= "(gosaUnitTag=".$this->gosaUnitTag.")";
+    }
+
     /* Load ACL's from all groups we're in */
     $this->subtreeACL= array();
     $ldap->cd($this->config->current['BASE']);
     if ($this->gidNumber == -1){
-      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".
+      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".$tag.
           "(memberUid=$this->username))");
     } else {
-      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".
+      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".$tag.
           "(|(memberUid=$this->username)(gidNumber=$this->gidNumber)))");
     }