public function Server::groupUserMembershipsFromUserAttr in Lightweight Directory Access Protocol (LDAP) 8.3
Get list of groups that a user is a member of using the memberOf attribute.
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::groupUserMembershipsFromUserAttr()
- 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 1386
Class
- Server
- Defines the Server entity.
Namespace
Drupal\ldap_servers\EntityCode
public function groupUserMembershipsFromUserAttr($user) {
if (!$this
->groupUserMembershipsFromAttributeConfigured()) {
return FALSE;
}
$groupAttribute = $this
->groupUserMembershipsAttr();
// If Drupal user passed in, try to get user_ldap_entry.
if (empty($user['attr'][$groupAttribute])) {
$user = $this
->userUserToExistingLdapEntry($user);
if (empty($user['attr'][$groupAttribute])) {
// User's membership attribute is not present. Either misconfigured or
// the query failed.
return FALSE;
}
}
// If not exited yet, $user must be $userLdapEntry.
$userLdapEntry = $user;
$allGroupDns = [];
$level = 0;
$membersGroupDns = $userLdapEntry['attr'][$groupAttribute];
if (isset($membersGroupDns['count'])) {
unset($membersGroupDns['count']);
}
$orFilters = [];
foreach ($membersGroupDns as $memberGroupDn) {
$allGroupDns[] = $memberGroupDn;
if ($this
->groupNested()) {
if ($this
->groupMembershipsAttrMatchingUserAttr() == 'dn') {
$member_value = $memberGroupDn;
}
else {
$member_value = $this
->getFirstRdnValueFromDn($memberGroupDn, $this
->groupMembershipsAttrMatchingUserAttr());
}
$orFilters[] = $this
->groupMembershipsAttr() . '=' . self::ldapEscape($member_value);
}
}
if ($this
->groupNested() && count($orFilters)) {
$allGroupDns = $this
->getNestedGroupDnFilters($allGroupDns, $orFilters, $level);
}
return $allGroupDns;
}