Bug 27604: Make sure PatronSelfRegistrationLibraryList is used
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 3 Feb 2021 15:14:12 +0000 (16:14 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 8 Feb 2021 13:56:00 +0000 (14:56 +0100)
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 <lucas@bywatersolutions.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
opac/opac-memberentry.pl

index 36fd00c..c51a18e 100755 (executable)
@@ -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 (