LDAP: implement UUID and internal username override

This commit is contained in:
Arthur Schiwon 2013-05-08 14:56:52 +02:00
parent c9b3da5bbc
commit 3f1717d3d5
1 changed files with 19 additions and 1 deletions

View File

@ -317,7 +317,19 @@ abstract class Access {
}
$ldapname = $ldapname[0];
}
$intname = $isUser ? $this->sanitizeUsername($uuid) : $ldapname;
if($isUser) {
$usernameAttribute = $this->connection->ldapExpertUsernameAttr;
if(!emptY($usernameAttribute)) {
$username = $this->readAttribute($dn, $usernameAttribute);
$username = $username[0];
} else {
$username = $uuid;
}
$intname = $this->sanitizeUsername($username);
} else {
$intname = $ldapname;
}
//a new user/group! Add it only if it doesn't conflict with other backend's users or existing groups
//disabling Cache is required to avoid that the new user is cached as not-existing in fooExists check
@ -897,6 +909,12 @@ abstract class Access {
return true;
}
$fixedAttribute = $this->connection->ldapExpertUUIDAttr;
if(!empty($fixedAttribute)) {
$this->connection->ldapUuidAttribute = $fixedAttribute;
return true;
}
//for now, supported (known) attributes are entryUUID, nsuniqueid, objectGUID
$testAttributes = array('entryuuid', 'nsuniqueid', 'objectguid', 'guid');