Bug 19366: Do not block patron's detail update if EmailMustBeUnique
If the pref PatronSelfRegistrationEmailMustBeUnique is set ("consider"), a patron is not allowed to register with an existing email address. The existing code is wrong and reject a patron that is updating their personal details with "This email address already exists in our database.", even if the patron did not modify their email address. This is caused by the query we made, we must search for patron with this email address but who is not the current patron. Test plan: - Set PatronSelfRegistrationEmailMustBeUnique to "consider" - Register a new patron with an existing email address => you should not be allowed - Use a non-existent email address => You should be allowed - Edit your patron details - Modify some infos => Should pass - Modify your email address with an existing one => You should not be allowed to do that Followed test plan, patches worked as described Signed-off-by: Alex Buckley <alexbuckley@catalyst.net.nz> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
99f6e1adf3
commit
ae02cf97e4
1 changed files with 12 additions and 1 deletions
|
@ -228,6 +228,7 @@ elsif ( $action eq 'update' ) {
|
|||
});
|
||||
|
||||
my %borrower = ParseCgiForBorrower($cgi);
|
||||
$borrower{borrowernumber} = $borrowernumber;
|
||||
|
||||
my %borrower_changes = DelEmptyFields(%borrower);
|
||||
my @empty_mandatory_fields =
|
||||
|
@ -392,7 +393,17 @@ sub CheckForInvalidFields {
|
|||
unless ( Email::Valid->address($borrower->{'email'}) ) {
|
||||
push(@invalidFields, "email");
|
||||
} elsif ( C4::Context->preference("PatronSelfRegistrationEmailMustBeUnique") ) {
|
||||
my $patrons_with_same_email = Koha::Patrons->search( { email => $borrower->{email} })->count;
|
||||
my $patrons_with_same_email = Koha::Patrons->search(
|
||||
{
|
||||
email => $borrower->{email},
|
||||
(
|
||||
exists $borrower->{borrowernumber}
|
||||
? ( borrowernumber =>
|
||||
{ '!=' => $borrower->{borrowernumber} } )
|
||||
: ()
|
||||
)
|
||||
}
|
||||
)->count;
|
||||
if ( $patrons_with_same_email ) {
|
||||
push @invalidFields, "duplicate_email";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue