Bug 22458: Don't check for duplicate email on borrower self modification

This patch adds an extra variable to internal function CheckValidBorrower to set the
context as 'create' or 'update'

To test:
1 - Enable PatronSelfRegistrationEmailMustBeUnique
2 - Edit a patron in staff interface and set email to 'a@example.org'
3 - Open an incognito window and go to opac
4 - Self register a patron using email a@example.org
5 - You receive an error
6 - Use b@example.org for email
7 - No problem
8 - Sign in as the new patron
9 - Edit your information
10 - Set email to a@example.org
11 - You receive an error
12 - Apply patch, restart all
13 - Edit patron again
14 - No error!
15 - Register another patron on the opac
16 - Confirm still wanred if using a@example.org as the email

Signed-off-by: Allax Guillen <AGuillen@roseville.ca.us>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Nick Clemens 2025-04-02 11:54:03 +00:00 committed by Katrin Fischer
parent c969fad2c2
commit 5cf5811d01
No known key found for this signature in database
GPG Key ID: 0EF6E2C03357A834
1 changed files with 6 additions and 4 deletions

View File

@ -137,7 +137,7 @@ if ( $op eq 'cud-create' ) {
my @empty_mandatory_fields =
( CheckMandatoryFields( \%borrower, $op ), CheckMandatoryAttributes( \%borrower, $attributes ) );
my $invalidformfields = CheckForInvalidFields( \%borrower );
my $invalidformfields = CheckForInvalidFields( { borrower => \%borrower, context => 'create' } );
delete $borrower{'password2'};
my $is_cardnumber_valid;
if ( !grep { $_ eq 'cardnumber' } @empty_mandatory_fields ) {
@ -310,7 +310,7 @@ if ( $op eq 'cud-create' ) {
my @empty_mandatory_fields = grep { $_ ne 'password' } # password is not required when editing personal details
( CheckMandatoryFields( \%borrower, $op ), CheckMandatoryAttributes( \%borrower, $attributes ) );
my $invalidformfields = CheckForInvalidFields( \%borrower );
my $invalidformfields = CheckForInvalidFields( { borrower => \%borrower, context => 'update' } );
# Send back the data to the template
%borrower = ( %$borrower, %borrower );
@ -482,12 +482,14 @@ sub CheckMandatoryAttributes {
}
sub CheckForInvalidFields {
my $borrower = shift;
my $params = shift;
my $borrower = $params->{borrower};
my $context = $params->{context};
my @invalidFields;
if ( $borrower->{'email'} ) {
unless ( Koha::Email->is_valid( $borrower->{email} ) ) {
push( @invalidFields, "email" );
} elsif ( C4::Context->preference("PatronSelfRegistrationEmailMustBeUnique") ) {
} elsif ( C4::Context->preference("PatronSelfRegistrationEmailMustBeUnique") && $context eq 'create' ) {
my $patrons_with_same_email = Koha::Patrons->search( # FIXME Should be search_limited?
{
email => $borrower->{email},