Bugzilla – Attachment 179770 Details for
Bug 36197
Allow unauthenticated ILL requests in the OPAC
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 36197: Update how form params are validated
Bug-36197-Update-how-form-params-are-validated.patch (text/plain), 5.60 KB, created by
Pedro Amorim
on 2025-03-27 12:17:22 UTC
(
hide
)
Description:
Bug 36197: Update how form params are validated
Filename:
MIME Type:
Creator:
Pedro Amorim
Created:
2025-03-27 12:17:22 UTC
Size:
5.60 KB
patch
obsolete
>From fa4f558e1231af0c9fd73e6e8bf59d0c51b92262 Mon Sep 17 00:00:00 2001 >From: Pedro Amorim <pedro.amorim@ptfs-europe.com> >Date: Tue, 5 Mar 2024 17:03:06 +0000 >Subject: [PATCH] Bug 36197: Update how form params are validated > >Validating an unauth request form requires checking for unauth info >fields. >Validating a regular authenticated request requires checking for >borrower information. > >Signed-off-by: David Nind <david@davidnind.com> >--- > Koha/ILL/Backend/Standard.pm | 105 ++++++++++++++++------ > Koha/ILL/Backend/opac-includes/create.inc | 4 + > 2 files changed, 82 insertions(+), 27 deletions(-) > >diff --git a/Koha/ILL/Backend/Standard.pm b/Koha/ILL/Backend/Standard.pm >index f55f207bca2..22f489a2c1a 100644 >--- a/Koha/ILL/Backend/Standard.pm >+++ b/Koha/ILL/Backend/Standard.pm >@@ -276,9 +276,6 @@ sub create { > } > > # Received completed details of form. Validate and create request. >- ## Validate >- my ( $brw_count, $brw ) = >- _validate_borrower( $other->{'cardnumber'} ); > my $result = { > cwd => dirname(__FILE__), > status => "", >@@ -290,31 +287,37 @@ sub create { > core => $core_fields > }; > my $failed = 0; >- if ( !$other->{'type'} ) { >- $result->{status} = "missing_type"; >- $result->{value} = $params; >- $failed = 1; >- } elsif ( !$other->{'branchcode'} ) { >- $result->{status} = "missing_branch"; >- $result->{value} = $params; >- $failed = 1; >- } elsif ( !Koha::Libraries->find( $other->{'branchcode'} ) ) { >- $result->{status} = "invalid_branch"; >- $result->{value} = $params; >- $failed = 1; >- } elsif ( $brw_count == 0 ) { >- $result->{status} = "invalid_borrower"; >- $result->{value} = $params; >- $failed = 1; >- } elsif ( $brw_count > 1 ) { >- >- # We must select a specific borrower out of our options. >- $params->{brw} = $brw; >- $result->{value} = $params; >- $result->{stage} = "borrowers"; >- $result->{error} = 0; >- $failed = 1; >+ >+ my $unauthenticated_request = >+ C4::Context->preference("ILLOpacUnauthenticatedRequest") && !$other->{'cardnumber'}; >+ if ($unauthenticated_request) { >+ ( $failed, $result ) = _validate_form_params( $other, $result, $params ); >+ if ( !_unauth_request_data_check($other) ) { >+ $result->{status} = "missing_unauth_data"; >+ $result->{value} = $params; >+ $failed = 1; >+ } >+ } else { >+ ( $failed, $result ) = _validate_form_params( $other, $result, $params ); >+ >+ my ( $brw_count, $brw ) = >+ _validate_borrower( $other->{'cardnumber'} ); >+ >+ if ( $brw_count == 0 ) { >+ $result->{status} = "invalid_borrower"; >+ $result->{value} = $params; >+ $failed = 1; >+ } elsif ( $brw_count > 1 ) { >+ >+ # We must select a specific borrower out of our options. >+ $params->{brw} = $brw; >+ $result->{value} = $params; >+ $result->{stage} = "borrowers"; >+ $result->{error} = 0; >+ $failed = 1; >+ } > } >+ > return $result if $failed; > > $self->add_request( { request => $params->{request}, other => $other } ); >@@ -1221,6 +1224,54 @@ sub _set_suppression { > return 1; > } > >+=head3 _unauth_request_data_check >+ >+ _unauth_request_data_check($other); >+ >+Checks if unauthenticated request data is present >+ >+=cut >+ >+sub _unauth_request_data_check { >+ my ($other) = @_; >+ >+ return 1 unless C4::Context->preference("ILLOpacUnauthenticatedRequest"); >+ >+ return >+ $other->{unauthenticated_first_name} >+ && $other->{unauthenticated_last_name} >+ && $other->{unauthenticated_email}; >+} >+ >+=head3 _validate_form_params >+ >+ _validate_form_params( $other, $result, $params ); >+ >+Validate form parameters and return the validation result >+ >+=cut >+ >+sub _validate_form_params { >+ my ( $other, $result, $params ) = @_; >+ >+ my $failed = 0; >+ if ( !$other->{'type'} ) { >+ $result->{status} = "missing_type"; >+ $result->{value} = $params; >+ $failed = 1; >+ } elsif ( !$other->{'branchcode'} ) { >+ $result->{status} = "missing_branch"; >+ $result->{value} = $params; >+ $failed = 1; >+ } elsif ( !Koha::Libraries->find( $other->{'branchcode'} ) ) { >+ $result->{status} = "invalid_branch"; >+ $result->{value} = $params; >+ $failed = 1; >+ } >+ >+ return ( $failed, $result ); >+} >+ > =head1 AUTHORS > > Alex Sassmannshausen <alex.sassmannshausen@ptfs-europe.com> >diff --git a/Koha/ILL/Backend/opac-includes/create.inc b/Koha/ILL/Backend/opac-includes/create.inc >index f80c151e751..fa2bad04236 100644 >--- a/Koha/ILL/Backend/opac-includes/create.inc >+++ b/Koha/ILL/Backend/opac-includes/create.inc >@@ -11,6 +11,10 @@ > <div class="alert alert-warning"> > <strong>Please note:</strong> Type is a mandatory field. > </div> >+[% ELSIF whole.status == 'missing_unauth_data' %] >+ <div class="alert alert-warning"> >+ <strong>Please note:</strong> Patron data (first name, last name and e-mail) are mandatory fields. >+ </div> > [% ELSIF whole.status == 'missing_branch' %] > <div class="alert alert-warning"> > <strong>Please note:</strong> Library is a mandatory field. >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 36197
:
171358
|
171359
|
171360
|
171361
|
171362
|
171363
|
171364
|
171365
|
171366
|
171367
|
171368
|
171369
|
171370
|
171371
|
174495
|
174496
|
174497
|
174498
|
174499
|
174500
|
174501
|
174502
|
174503
|
174504
|
174505
|
174506
|
174507
|
174508
|
176564
|
176565
|
176680
|
176723
|
176724
|
176726
|
176727
|
179764
|
179765
|
179766
|
179767
|
179769
|
179770
|
179771
|
179772
|
179773
|
179774
|
179775
|
179776
|
179777
|
179778
|
179779
|
179780
|
179781
|
179782
|
179783
|
179784
|
179785
|
180850
|
180851
|
180852
|
180853
|
180854
|
180855
|
180856
|
180857
|
180858
|
180859
|
180860
|
180861
|
180862
|
180863
|
180864
|
180865
|
180866
|
180867
|
180868
|
180869
|
180870
|
180871
|
180872
|
180873
|
181073
|
181074
|
181075
|
181076
|
181077
|
181078
|
181079
|
181080
|
181081
|
181082
|
181083
|
181084
|
181085
|
181086
|
181087
|
181088
|
181089
|
181090
|
181091
|
181092
|
181093
|
181094
|
181095
|
181096
|
181097
|
181098
|
181592