diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckUser.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckUser.pm index dea1724d6..b31e889ba 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckUser.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/CheckUser.pm @@ -631,7 +631,7 @@ sub _dispatchAttributes { sub _removeKeys { my ( $self, $attrs, $hidden, $msg, $mask ) = @_; - my $regex = join '|', split /\s+/, $hidden; + my $regex = '^(?:' . join( '|', split( /\s+/, $hidden ) ) . ')'; my @keys = grep /$regex/, keys %$attrs; $self->logger->debug($msg); diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/FindUser.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/FindUser.pm index 6b38dc84e..64b4e4d06 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/FindUser.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/FindUser.pm @@ -88,9 +88,17 @@ sub retreiveFindUserParams { $self->logger->debug("FindUser: reading parameters..."); @$searching = map { - my $key = ( split '#', $_ )[0]; - my $value = $req->params($key) // ''; - if ( $value =~ /$self->{conf}->{findUserControl}/o ) { + my $regex = '\w+'; + my $key = ( split '#', $_ )[0]; + my $value = $req->params($key) // ''; + my @values = split $self->conf->{multiValuesSeparator}, + $self->conf->{findUserSearchingAttributes}->{$_} || ''; + $regex = '^(?:' . join( '|', split( /\s+/, @values ) ) . ')$' + if scalar @values > 1; + + if ( $value =~ /$regex/o + && $value =~ /$self->{conf}->{findUserControl}/o ) + { $self->logger->debug("Push searching parameter: $key => $value"); { key => $key, value => $value }; }