public function Server::groupUserMembershipsFromEntry in Lightweight Directory Access Protocol (LDAP) 8.3
Get list of all groups that a user is a member of by querying groups.
Parameters
mixed $user: A Drupal user entity, an LDAP entry array of a user or a username.
Return value
array|false Array of group dns in mixed case or FALSE on error.
See also
groupMembershipsFromUser()
1 call to Server::groupUserMembershipsFromEntry()
- Server::groupMembershipsFromUser in ldap_servers/
src/ Entity/ Server.php - Get list of all groups that a user is a member of.
File
- ldap_servers/
src/ Entity/ Server.php, line 1443
Class
- Server
- Defines the Server entity.
Namespace
Drupal\ldap_servers\EntityCode
public function groupUserMembershipsFromEntry($user) {
if (!$this
->groupGroupEntryMembershipsConfigured()) {
return FALSE;
}
$userLdapEntry = $this
->userUserToExistingLdapEntry($user);
// MIXED CASE VALUES.
$allGroupDns = [];
// Array of dns already tested to avoid excess queries MIXED CASE VALUES.
$testedGroupIds = [];
$level = 0;
if ($this
->groupMembershipsAttrMatchingUserAttr() == 'dn') {
$member_value = $userLdapEntry['dn'];
}
else {
$member_value = $userLdapEntry['attr'][$this
->groupMembershipsAttrMatchingUserAttr()][0];
}
$groupQuery = '(&(objectClass=' . $this
->groupObjectClass() . ')(' . $this
->groupMembershipsAttr() . "={$member_value}))";
// Need to search on all basedns one at a time.
foreach ($this
->getBaseDn() as $baseDn) {
// Only need dn, so empty array forces return of no attributes.
$groupEntries = $this
->search($baseDn, $groupQuery, []);
if ($groupEntries !== FALSE) {
$maxLevels = $this
->groupNested() ? self::LDAP_SERVER_LDAP_QUERY_RECURSION_LIMIT : 0;
$this
->groupMembershipsFromEntryRecursive($groupEntries, $allGroupDns, $testedGroupIds, $level, $maxLevels);
}
}
return $allGroupDns;
}