changes for adding ldap recursive filter
This commit is contained in:
parent
45b5d6ea5b
commit
ec4245a7d8
2 changed files with 24 additions and 2 deletions
|
|
@ -753,6 +753,7 @@ sub getLDAPUsers {
|
||||||
my $ldapGroup = $self->get("ldapGroup");
|
my $ldapGroup = $self->get("ldapGroup");
|
||||||
my $ldapGroupProperty = $self->get("ldapGroupProperty");
|
my $ldapGroupProperty = $self->get("ldapGroupProperty");
|
||||||
my $ldapRecursiveProperty = $self->get("ldapRecursiveProperty");
|
my $ldapRecursiveProperty = $self->get("ldapRecursiveProperty");
|
||||||
|
my $ldapRecurseFilter = $self->get("ldapRecursiveFilter");
|
||||||
|
|
||||||
return [] unless ($ldapLinkId && $ldapGroup && $ldapGroupProperty);
|
return [] unless ($ldapLinkId && $ldapGroup && $ldapGroupProperty);
|
||||||
|
|
||||||
|
|
@ -764,7 +765,7 @@ sub getLDAPUsers {
|
||||||
|
|
||||||
my $people = [];
|
my $people = [];
|
||||||
if($ldapRecursiveProperty) {
|
if($ldapRecursiveProperty) {
|
||||||
$ldapLink->recurseProperty($ldapGroup,$people,$ldapGroupProperty,$ldapRecursiveProperty);
|
$ldapLink->recurseProperty($ldapGroup,$people,$ldapGroupProperty,$ldapRecursiveProperty,$ldapRecurseFilter);
|
||||||
} else {
|
} else {
|
||||||
$people = $ldapLink->getProperty($ldapGroup,$ldapGroupProperty);
|
$people = $ldapLink->getProperty($ldapGroup,$ldapGroupProperty);
|
||||||
}
|
}
|
||||||
|
|
@ -1184,7 +1185,26 @@ sub ldapRecursiveProperty {
|
||||||
return $self->get("ldapRecursiveProperty");
|
return $self->get("ldapRecursiveProperty");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 ldapRecursiveFilter ( [ value ] )
|
||||||
|
|
||||||
|
Returns the ldap group recursive filter used to filter out entries that aren't groups from the groups of groups attribute.
|
||||||
|
|
||||||
|
=head3 value
|
||||||
|
|
||||||
|
If specified, the ldapRecursiveFilter is set to this value.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub ldapRecursiveFilter {
|
||||||
|
my $self = shift;
|
||||||
|
my $value = shift;
|
||||||
|
if (defined $value) {
|
||||||
|
$self->set("ldapRecursiveFilter",$value);
|
||||||
|
}
|
||||||
|
return $self->get("ldapRecursiveFilter");
|
||||||
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,6 +267,7 @@ sub recurseProperty {
|
||||||
my $property = $_[2];
|
my $property = $_[2];
|
||||||
my $recProperty = $_[3] || $property;
|
my $recProperty = $_[3] || $property;
|
||||||
my $count = $_[4] || 0;
|
my $count = $_[4] || 0;
|
||||||
|
my $recurseFilter = $_[5] || $self->get->{globalRecursiveFilter};
|
||||||
return unless($ldap && $base && $property);
|
return unless($ldap && $base && $property);
|
||||||
|
|
||||||
#Prevent infinate recursion
|
#Prevent infinate recursion
|
||||||
|
|
@ -293,7 +294,8 @@ sub recurseProperty {
|
||||||
$properties = $entry->get_value($recProperty,asref => 1);
|
$properties = $entry->get_value($recProperty,asref => 1);
|
||||||
}
|
}
|
||||||
foreach my $prop (@{$properties}) {
|
foreach my $prop (@{$properties}) {
|
||||||
$self->recurseProperty($prop,$array,$property,$recProperty,$count);
|
next if ($recurseFilter && $prop =~ m/$recurseFilter/ig);
|
||||||
|
$self->recurseProperty($prop,$array,$property,$recProperty,$count,$recurseFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue