From 0f2aea716a9cbdb3431872a8bff2002b3e2e77be Mon Sep 17 00:00:00 2001 From: mxbeaulieu Date: Fri, 24 Jul 2015 16:16:03 -0400 Subject: [PATCH] Bug 8753 - Use Koha::Borrowers instead of C4::Members Use the new library to search for borrowers. Changed how the $borrower variable is used since it is now a Koha::Borrower object. Removed the $protocol parameter from the generated link. It should be included in the OPACBaseURL syspref. modified: C4/Passwordrecovery.pm modified: opac/opac-password-recovery.pl Signed-off-by: Marc Veron Signed-off-by: Marcel de Rooy --- C4/Passwordrecovery.pm | 15 +++++++-------- opac/opac-password-recovery.pl | 16 ++++++++-------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/C4/Passwordrecovery.pm b/C4/Passwordrecovery.pm index 67b5695841..f90d27c8b1 100644 --- a/C4/Passwordrecovery.pm +++ b/C4/Passwordrecovery.pm @@ -102,9 +102,8 @@ sub GetValidLinkInfo { =cut sub SendPasswordRecoveryEmail { - my $borrower = shift; # from GetMember + my $borrower = shift; # Koha::Borrower my $userEmail = shift; #to_address (the one specified in the request) - my $protocol = shift; #only required to determine if 'http' or 'https' my $update = shift; my $schema = Koha::Database->new->schema; @@ -119,26 +118,26 @@ sub SendPasswordRecoveryEmail { if($update){ my $rs = $schema->resultset('BorrowerPasswordRecovery')->search( { - borrowernumber => $borrower->{'borrowernumber'}, + borrowernumber => $borrower->borrowernumber, }); $rs->update({uuid => $uuid_str, valid_until => $expirydate->datetime()}); } else { my $rs = $schema->resultset('BorrowerPasswordRecovery')->create({ - borrowernumber=>$borrower->{'borrowernumber'}, + borrowernumber=>$borrower->borrowernumber, uuid => $uuid_str, valid_until=> $expirydate->datetime() }); } # create link - my $uuidLink = $protocol . C4::Context->preference( 'OPACBaseURL' ) . "/cgi-bin/koha/opac-password-recovery.pl?uniqueKey=$uuid_str"; + my $uuidLink = C4::Context->preference( 'OPACBaseURL' ) . "/cgi-bin/koha/opac-password-recovery.pl?uniqueKey=$uuid_str"; # prepare the email my $letter = C4::Letters::GetPreparedLetter ( module => 'members', letter_code => 'PASSWORD_RESET', - branchcode => $borrower->{branchcode}, - substitute => {passwordreseturl => $uuidLink, user => $borrower->{userid} }, + branchcode => $borrower->branchcode, + substitute => {passwordreseturl => $uuidLink, user => $borrower->userid }, ); # define to/from emails @@ -146,7 +145,7 @@ sub SendPasswordRecoveryEmail { C4::Letters::EnqueueLetter( { letter => $letter, - borrowernumber => $borrower->{borrowernumber}, + borrowernumber => $borrower->borrowernumber, to_address => $userEmail, from_address => $kohaEmail, message_transport_type => 'email', diff --git a/opac/opac-password-recovery.pl b/opac/opac-password-recovery.pl index e2cd74e665..ba7bcb6aa3 100755 --- a/opac/opac-password-recovery.pl +++ b/opac/opac-password-recovery.pl @@ -6,11 +6,12 @@ use CGI; use C4::Auth; use C4::Koha; -use C4::Members qw(changepassword Search); +use C4::Members qw(changepassword); use C4::Output; use C4::Context; use C4::Passwordrecovery qw(SendPasswordRecoveryEmail ValidateBorrowernumber GetValidLinkInfo CompletePasswordRecovery); use Koha::AuthUtils qw(hash_password); +use Koha::Borrowers; my $query = new CGI; use HTML::Entities; @@ -49,17 +50,16 @@ my $errPassNotMatch; my $errPassTooShort; if ( $query->param('sendEmail') || $query->param('resendEmail') ) { - my $protocol = $query->https() ? "https://" : "http://"; #try with the main email $email ||= ''; # avoid undef my $borrower; my $search_results; # Find the borrower by his userid or email if( $username ){ - $search_results = Search({ userid => $username }); + $search_results = [ Koha::Borrowers->search({ userid => $username }) ]; } elsif ( $email ){ - $search_results = Search({ '' => $email }, undef, undef, undef, ['emailpro', 'email', 'B_email']); + $search_results = [ Koha::Borrowers->search({-or => {email => $email, emailpro=> $email, B_email=>$email }}) ]; } if ( not $search_results ){ $hasError = 1; @@ -70,8 +70,8 @@ if ( $query->param('sendEmail') || $query->param('resendEmail') ) { $errTooManyEmailFound = 1; } elsif( $borrower = shift @$search_results ){ # One matching borrower - $username ||= $borrower->{'userid'}; - my @emails = ( $borrower->{'email'}, $borrower->{'emailpro'}, $borrower->{'B_email'} ); + $username ||= $borrower->userid; + my @emails = ( $borrower->email, $borrower->emailpro, $borrower->B_email ); # Is the given email one of the borrower's ? if( $email && !($email ~~ @emails) ){ $hasError = 1; @@ -86,7 +86,7 @@ if ( $query->param('sendEmail') || $query->param('resendEmail') ) { $errNoBorrowerEmail = 1; } # Check if a password reset already issued for this borrower AND we are not asking for a new email - elsif( ValidateBorrowernumber( $borrower->{'borrowernumber'} ) && !$query->param('resendEmail') ){ + elsif( ValidateBorrowernumber( $borrower->borrowernumber ) && !$query->param('resendEmail') ){ $hasError = 1; $errAlreadyStartRecovery = 1; } @@ -108,7 +108,7 @@ if ( $query->param('sendEmail') || $query->param('resendEmail') ) { username => $username ); } - elsif ( SendPasswordRecoveryEmail( $borrower, $email, $protocol, $query->param('resendEmail') ) ) {#generate uuid and send recovery email + elsif ( SendPasswordRecoveryEmail( $borrower, $email, $query->param('resendEmail') ) ) {#generate uuid and send recovery email $template->param( mail_sent => 1, email => $email -- 2.39.5