Code

Added functionality to do strict filtering for administrative units
[gosa.git] / include / class_userinfo.inc
index 337c398a79f7c8e408ce1eda0d19776690a9b692..77003f9e706d8bfeb1571e87f51aba54d3808492 100644 (file)
@@ -24,7 +24,10 @@ class userinfo
   var $ip;
   var $username;
   var $cn;
+  var $gidNumber= -1;
+  var $language= "";
   var $config;
+  var $gosaUnitTag= "";
   var $subtreeACL= array();
 
   /* get acl's an put them into the userinfo object
@@ -32,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])){
@@ -40,6 +43,18 @@ class userinfo
     } else {
       $this->cn= $attrs['uid'][0];
     }
+    if (isset($attrs['gidNumber'][0])){
+      $this->gidNumber= $attrs['gidNumber'][0];
+    }
+
+    /* Assign user language */
+    if (isset($attrs['preferredLanguage'][0])){
+      $this->language= $attrs['preferredLanguage'][0];
+    }
+
+    if (isset($attrs['gosaUnitTag'][0])){
+      $this->gosaUnitTag= $attrs['gosaUnitTag'][0];
+    }
 
     $this->dn= $userdn;
     $this->ip= $_SERVER['REMOTE_ADDR'];
@@ -53,8 +68,13 @@ class userinfo
     /* Load ACL's from all groups we're in */
     $this->subtreeACL= array();
     $ldap->cd($this->config->current['BASE']);
-    $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".
-        "(|(memberUid=$this->username)(cn=$this->username)))");
+    if ($this->gidNumber == -1){
+      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".
+          "(memberUid=$this->username))");
+    } else {
+      $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".
+          "(|(memberUid=$this->username)(gidNumber=$this->gidNumber)))");
+    }
 
     while($attrs = $ldap->fetch()){
       $base= preg_replace('/^[^,]+,ou=[^,]+,/i', "",$ldap->getDN());