From 41aaad80980fa0ddd8cb7f3c9f9f7f41441832c7 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 3 Feb 2021 16:14:12 +0100 Subject: [PATCH] Bug 27604: Make sure PatronSelfRegistrationLibraryList is used The value of PatronSelfRegistrationLibraryList is used to display the dropdown list of the libraries, but not after the form is submitted. Test plan: 1. Empty PatronSelfRegistrationLibraryList 2. Self register a new patron => Confirm the dropdown list with the libraries contain all the libraries 3. Fill in PatronSelfRegistrationLibraryList with branchcodes (eg. "CPL|MPL") 4. Self register a new patron 5. Edit the HTML form and replace the option's value with another branchcode (FPL) 6. Save => Without this patch the branchcode FPL is used => With this patch applied an ugly 500 is returned Signed-off-by: Lucas Gass Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart (cherry picked from commit 376bf9b980b877a38acc6680445ad5aa0078620c) Signed-off-by: Fridolin Somers --- opac/opac-memberentry.pl | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index 36fd00caf2..c51a18eafa 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -76,15 +76,18 @@ if ( $action eq q{} ) { my $mandatory = GetMandatoryFields($action); my @libraries = Koha::Libraries->search; -if ( $action eq 'new' - && ( my @libraries_to_display = split '\|', C4::Context->preference('PatronSelfRegistrationLibraryList') ) -) { - @libraries = map { - my $b = $_; - my $branchcode = $_->branchcode; - ( grep { $_ eq $branchcode } @libraries_to_display ) ? $b : () - } @libraries; +if ( $action eq 'create' || $action eq 'new' ) { + my @PatronSelfRegistrationLibraryList = split '\|', C4::Context->preference('PatronSelfRegistrationLibraryList'); + if (@PatronSelfRegistrationLibraryList) { + @libraries = map { + my $l = $_; + ( grep { $l->branchcode eq $_ } @PatronSelfRegistrationLibraryList ) + ? $l + : () + } @libraries; + } } + my ( $min, $max ) = C4::Members::get_cardnumber_length(); if ( defined $min ) { $template->param( @@ -159,6 +162,8 @@ if ( $action eq 'create' ) { borrower => \%borrower ); $template->param( patron_attribute_classes => GeneratePatronAttributesForm( undef, $attributes ) ); + } elsif ( ! grep { $borrower{branchcode} eq $_->branchcode } @libraries ) { + die "Branchcode not allowed"; # They hack the form } else { if ( -- 2.39.5