ldap: optionally save group name by attribute

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2020-03-13 13:18:42 +01:00 committed by Thomas Lamprecht
parent 1f32d4ce78
commit 3c775763dc

View File

@ -176,7 +176,7 @@ sub query_users {
} }
sub query_groups { sub query_groups {
my ($ldap, $base_dn, $classes, $filter) = @_; my ($ldap, $base_dn, $classes, $filter, $group_name_attr) = @_;
my $tmp = "(|"; my $tmp = "(|";
for my $class (@$classes) { for my $class (@$classes) {
@ -193,12 +193,14 @@ sub query_groups {
my $page = Net::LDAP::Control::Paged->new(size => 100); my $page = Net::LDAP::Control::Paged->new(size => 100);
my $attrs = [ 'member', 'uniqueMember' ];
push @$attrs, $group_name_attr if $group_name_attr;
my @args = ( my @args = (
base => $base_dn, base => $base_dn,
scope => "subtree", scope => "subtree",
filter => $filter, filter => $filter,
control => [ $page ], control => [ $page ],
attrs => [ 'member', 'uniqueMember' ], attrs => $attrs,
); );
my $cookie; my $cookie;
@ -225,6 +227,9 @@ sub query_groups {
$members = [$entry->get_value('uniqueMember')]; $members = [$entry->get_value('uniqueMember')];
} }
$group->{members} = $members; $group->{members} = $members;
if ($group_name_attr && (my $name = $entry->get_value($group_name_attr))) {
$group->{name} = $name;
}
push @$groups, $group; push @$groups, $group;
} }