index 79e9526793437484a4699054ac3248f1a205e749..85538a5b042a581d875caf51cee85bbe1a097699 100644 (file)
var $gidNumber= -1;
var $language= "";
var $config;
+ var $gosaUnitTag= "";
var $subtreeACL= array();
/* get acl's an put them into the userinfo object
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])){
$this->language= $attrs['preferredLanguage'][0];
}
+ if (isset($attrs['gosaUnitTag'][0])){
+ $this->gosaUnitTag= $attrs['gosaUnitTag'][0];
+ }
+
$this->dn= $userdn;
$this->ip= $_SERVER['REMOTE_ADDR'];
}
{
$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)))");
}
while($attrs = $ldap->fetch()){
- $base= preg_replace('/^[^,]+,ou=[^,]+,/i', "",$ldap->getDN());
- $base= preg_replace("/[ ]*,[ ]*/", ",", $base);
+ $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];