Bug 18403: Add new methods Koha::Patrons->search_limited and use it where needed
Most of the time when we search for patrons we do not want to search for all patrons, but just the ones the logged in user is allowed to see the information. This patch takes care of that by adding a new search_limited method to Koha::Patrons. When called this method only search for patrons that the logged in user is allowed to see. Test plan: Patron autocomplete search should be limited Signed-off-by: Signed-off-by: Jon McGowan <jon.mcgowan@ptfs-europe.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
032992042d
commit
7809a6bd13
|
|
@ -41,6 +41,41 @@ Koha::Patron - Koha Patron Object class
|
|||
|
||||
=cut
|
||||
|
||||
=head3 search_limited
|
||||
|
||||
my $patrons = Koha::Patrons->search_limit( $params, $attributes );
|
||||
|
||||
Returns all the patrons the logged in user is allowed to see
|
||||
|
||||
=cut
|
||||
|
||||
sub search_limited {
|
||||
my ( $self, $params, $attributes ) = @_;
|
||||
|
||||
my $userenv = C4::Context->userenv;
|
||||
my @restricted_branchcodes;
|
||||
my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
|
||||
if ( $logged_in_user and not
|
||||
$logged_in_user->can(
|
||||
{ borrowers => 'view_borrower_infos_from_any_libraries' }
|
||||
)
|
||||
)
|
||||
{
|
||||
if ( my $library_groups = $logged_in_user->library->library_groups )
|
||||
{
|
||||
while ( my $library_group = $library_groups->next ) {
|
||||
push @restricted_branchcodes,
|
||||
$library_group->parent->children->get_column('branchcode');
|
||||
}
|
||||
}
|
||||
else {
|
||||
push @restricted_branchcodes, $userenv->{branch};
|
||||
}
|
||||
}
|
||||
$params->{'me.branchcode'} = { -in => \@restricted_branchcodes } if @restricted_branchcodes;
|
||||
return $self->search( $params, $attributes );
|
||||
}
|
||||
|
||||
=head3 search_housebound_choosers
|
||||
|
||||
Returns all Patrons which are Housebound choosers.
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ foreach my $p (@parts) {
|
|||
|
||||
push( @params, { branchcode => C4::Context->userenv->{branch} } ) if $limit_on_branch;
|
||||
|
||||
my $borrowers_rs = Koha::Patrons->search(
|
||||
my $borrowers_rs = Koha::Patrons->search_limited(
|
||||
{ -and => \@params },
|
||||
{
|
||||
# Get the first 10 results
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ if ( ( $op eq 'insert' ) and !$nodouble ) {
|
|||
$conditions->{dateofbirth} = $newdata{dateofbirth} if $newdata{dateofbirth};
|
||||
}
|
||||
$nodouble = 1;
|
||||
my $patrons = Koha::Patrons->search($conditions);
|
||||
my $patrons = Koha::Patrons->search($conditions); # FIXME Should be search_limited?
|
||||
if ( $patrons->count > 0) {
|
||||
$nodouble = 0;
|
||||
$check_member = $patrons->next->borrowernumber;
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@ sub CheckForInvalidFields {
|
|||
unless ( Email::Valid->address($borrower->{'email'}) ) {
|
||||
push(@invalidFields, "email");
|
||||
} elsif ( C4::Context->preference("PatronSelfRegistrationEmailMustBeUnique") ) {
|
||||
my $patrons_with_same_email = Koha::Patrons->search(
|
||||
my $patrons_with_same_email = Koha::Patrons->search( # FIXME Should be search_limited?
|
||||
{
|
||||
email => $borrower->{email},
|
||||
(
|
||||
|
|
|
|||
Loading…
Reference in New Issue