Skip to content
This repository has been archived by the owner on Jul 24, 2023. It is now read-only.

Cannot get the list of members of a group when using IN. #794

Open
vsc55 opened this issue Dec 2, 2021 · 2 comments
Open

Cannot get the list of members of a group when using IN. #794

vsc55 opened this issue Dec 2, 2021 · 2 comments

Comments

@vsc55
Copy link

vsc55 commented Dec 2, 2021

  • Adldap2 Version: 10.3
  • LDAP Type: OpenLDAP
  • PHP Version: 7.4.16

Description:

The members that make up a group are not found if it is used "->in()".

Could I be doing something wrong?
what I want is to obtain the groups within the dn "ou=PBX,ou=Group,dc=domian,dc=lan" and to be able to obtain the members of each groups.

Steps To Reproduce:

Work Good:

$groupss = $this->ldap->search()->groups()->get();
foreach ($groupss as $group) {
	echo "Type:" . get_class($group) . " - Grp DN:" . $group->dn[0]."\n";
	foreach ($group->getMembers() as $member) {
		echo "Type:" . get_class($member) . " - getAccountName:" . $member->getAccountName()."\n";
	}
	echo "\n\n";
}

Return:

Type:Adldap\Models\Group - Grp DN:cn=Domain Admins,ou=Group,dc=domian,dc=lan
Type:Adldap\Models\User - getDisplayName:Administrator

Type:Adldap\Models\Group - Grp DN:cn=PBX Users,ou=PBX,ou=Group,dc=domian,dc=lan
Type:Adldap\Models\User - getDisplayName:user

Type:Adldap\Models\Group - Grp DN:cn=PBX Admins,ou=PBX,ou=Group,dc=domian,dc=lan

Type:Adldap\Models\Group - Grp DN:cn=Backup Raspberry,ou=Group,dc=domian,dc=lan
Type:Adldap\Models\User - getDisplayName:pi

Work Bad:

$groupss = $this->ldap->search()->groups()->in('ou=PBX,ou=Group,dc=domian,dc=lan')->get();
foreach ($groupss as $group) {
	echo "Type:" . get_class($group) . " - Grp DN:" . $group->dn[0]."\n";
	foreach ($group->getMembers() as $member) {
		echo "Type:" . get_class($member) . " - getAccountName:" . $member->getAccountName()."\n";
	}
	echo "\n\n";
}

Return:

Type:Adldap\Models\Group - Grp DN:cn=PBX Users,ou=PBX,ou=Group,dc=domian,dc=lan
Type:Adldap\Models\Group - Grp DN:cn=PBX Admins,ou=PBX,ou=Group,dc=domian,dc=lan
@stevebauman
Copy link
Member

Hi @vsc55,

Have you configured your connection to use the OpenLDAP schema?

@vsc55
Copy link
Author

vsc55 commented Dec 3, 2021

Hi @stevebauman,
Yes, I have configured it to use the openldap schema.

I am using it here:
https://git.freepbx.org/projects/FREEPBX/repos/userman/browse/functions.inc/auth/modules/Openldap2.php?at=refs%2Fheads%2Frelease%2F16.0#270

I use this schema that we are inheriting from the \Adldap\Schemas\OpenLDAP class.
https://git.freepbx.org/projects/FREEPBX/repos/userman/browse/functions.inc/auth/modules/openldap2/Openldap2Schema.class.php?at=refs%2Fheads%2Frelease%2F16.0

The groups are obtained with the following code:

$search = $this->ldap->search();
$paginator = $search->in($groupdn)->rawFilter("(&".$this->config['groupobjectfilter']."(objectclass=".$this->config['groupobjectclass']."))")->select(["*",$this->config['groupgidnumberattr'],$this->config['descriptionattr'],$this->config['groupnameattr'], $this->config['externalidattr'], $this->config['groupmemberattr']])->paginate($this->limit, 1);
$results = $paginator->getResults();

This returns the groups but when trying to obtain the members of each group with getMembers() it does not return data.
Complete code:
https://git.freepbx.org/projects/FREEPBX/repos/userman/browse/functions.inc/auth/modules/Openldap2.php?at=refs%2Fheads%2Frelease%2F16.0#561

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants