config= $config; $ldap= $this->config->get_ldap_link(); $ldap->cat($userdn,array('sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage', 'gosaUnitTag')); $attrs= $ldap->fetch(); if (isset($attrs['givenName'][0]) && isset($attrs['sn'][0])){ $this->cn= $attrs['givenName'][0]." ".$attrs['sn'][0]; } 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']; } function loadACL() { $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)".$tag. "(memberUid=$this->username))"); } else { $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaObject)".$tag. "(|(memberUid=$this->username)(gidNumber=$this->gidNumber)))"); } while($attrs = $ldap->fetch()){ $base= preg_replace('/^[^,]*+,'.normalizePreg(get_groups_ou()).'/i', "",$ldap->getDN()); $base= preg_replace("/\s*,\s*/", ",", $base); for ($i= 0; $i<$attrs["gosaSubtreeACL"]["count"]; $i++){ $this->subtreeACL[$base][]= $attrs["gosaSubtreeACL"][$i]; } } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>