Bugzilla – Attachment 84598 Details for
Bug 21890
Allow forgotten password functionality to be limited by patron category
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 21890: Allow restricting password resets by patron category
Bug-21890-Allow-restricting-password-resets-by-pat.patch (text/plain), 11.01 KB, created by
Tomás Cohen Arazi (tcohen)
on 2019-01-31 19:54:08 UTC
(
hide
)
Description:
Bug 21890: Allow restricting password resets by patron category
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2019-01-31 19:54:08 UTC
Size:
11.01 KB
patch
obsolete
>From 28363fc1a77f8e56b1e06f4bf8cb165122b87698 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Thu, 31 Jan 2019 16:29:30 -0300 >Subject: [PATCH] Bug 21890: Allow restricting password resets by patron > category > >This patch makes the templates relying on the OpacResetPassword syspref >use the introduced TT plugin method instead by changing: > >[% IF Koha.Preference('OpacResetPassword') %] > >=> > >[% IF Categories.can_any_reset_password %] > >To test: >- Verify that all the places in which the 'forgot password' link is >displayed in OPAC keep working, provided there's at least one category >that has the flag set >- Attempt to recover the password for a patron that belong to a valid >category (i.e. that has the flag set) >=> SUCCESS: You can go through the normal process >- Attempt to recover the password for a patron that belongs to a >category with the flag unset. >=> SUCCESS: Once Koha identifies your category, you are told you are not >allowed to do it >- Sign off :-D >--- > .../intranet-tmpl/prog/en/modules/auth.tt | 3 +- > .../bootstrap/en/includes/masthead.inc | 3 +- > .../bootstrap/en/modules/opac-auth.tt | 3 +- > .../bootstrap/en/modules/opac-main.tt | 3 +- > .../en/modules/opac-password-recovery.tt | 5 +- > opac/opac-password-recovery.pl | 57 +++++++++++-------- > 6 files changed, 46 insertions(+), 28 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt >index 19548caf57..7533b0cb8b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/auth.tt >@@ -1,6 +1,7 @@ > [% USE raw %] > [% USE Koha %] > [% USE Branches %] >+[% USE Categories %] > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › >@@ -42,7 +43,7 @@ > > [% IF too_many_login_attempts %] > <div id="login_error"><strong>Error: </strong>This account has been locked!</div> >- [% IF Koha.Preference('OpacResetPassword') && Koha.Preference('OpacBaseURL') %] >+ [% IF Categories.can_any_reset_password && Koha.Preference('OpacBaseURL') %] > <a href="[% Koha.Preference('OpacBaseURL') | url %]/cgi-bin/koha/opac-password-recovery.pl">You must reset your password</a>. > [% END %] > [% ELSIF invalid_username_or_password %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc >index 9466c2d9c6..3b5e9d9b8b 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc >@@ -1,6 +1,7 @@ > [% USE raw %] > [% USE Koha %] > [% USE Branches %] >+[% USE Categories %] > [% SET OpacLangSelectorMode = Koha.Preference('OpacLangSelectorMode') %] > <div id="wrap"> > <div id="header-region" class="noprint"> >@@ -324,7 +325,7 @@ > [% Koha.Preference( 'OpacLoginInstructions' ) | $raw %] > </div> > [% END %] >- [% IF Koha.Preference('OpacPasswordChange') && Koha.Preference('OpacResetPassword') %] >+ [% IF Koha.Preference('OpacPasswordChange') && Categories.can_any_reset_password %] > <div id="forgotpassword-modal" class="forgotpassword"> > <a href="/cgi-bin/koha/opac-password-recovery.pl">Forgot your password?</a> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth.tt >index d8aeabec78..8bb82f56df 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth.tt >@@ -1,5 +1,6 @@ > [% USE raw %] > [% USE Koha %] >+[% USE Categories %] > [% INCLUDE 'doc-head-open.inc' %] > <title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog › > [% IF Koha.Preference( 'opacuserlogin' ) == 1 %] >@@ -169,7 +170,7 @@ > > <input type="submit" value="Log in" class="btn" /> > <p/> >- [% IF Koha.Preference('OpacPasswordChange') && Koha.Preference('OpacResetPassword') %] >+ [% IF Koha.Preference('OpacPasswordChange') && Categories.can_any_reset_password %] > <div id="forgotpassword"> > <a href="/cgi-bin/koha/opac-password-recovery.pl">Forgot your password?</a> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >index 35812fdc76..d65b001989 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >@@ -1,6 +1,7 @@ > [% USE raw %] > [% USE Koha %] > [% USE Branches %] >+[% USE Categories %] > [% USE Price %] > [% INCLUDE 'doc-head-open.inc' %] > <title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title> >@@ -129,7 +130,7 @@ > [% Koha.Preference( 'OpacLoginInstructions' ) | $raw %] > </div> > [% END %] >- [% IF Koha.Preference('OpacPasswordChange') && Koha.Preference('OpacResetPassword') %] >+ [% IF Koha.Preference('OpacPasswordChange') && Categories.can_any_reset_password %] > <div id="forgotpassword-main" class="forgotpassword"> > <p><a href="/cgi-bin/koha/opac-password-recovery.pl">Forgot your password?</a></p> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-password-recovery.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-password-recovery.tt >index 73eb975eca..857b1c49dc 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-password-recovery.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-password-recovery.tt >@@ -1,4 +1,5 @@ > [% USE Koha %] >+[% USE Categories %] > [% INCLUDE 'doc-head-open.inc' %] > <title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %] - Forgotten password recovery[% ELSE %]Koha online[% END %] catalog - Forgotten password recovery</title> > [% INCLUDE 'doc-head-close.inc' %] >@@ -77,13 +78,15 @@ > [% ELSIF (errLinkNotValid) %] > The link you clicked is either invalid, or expired. > <br/>Be sure you used the link from the email, or contact library staff for assistance. >+ [% ELSIF errNoBorrowerFound %] >+ <li>You are not allowed to reset your password. Contact library staff for assistance.</li> > [% END %] > </p> > <p>Please contact the library if you need further assistance.</p> > </div> > [% END %] > <div id="password-recovery"> >-[% IF (!Koha.Preference('OpacResetPassword')) %] >+[% IF (! Categories.can_any_reset_password ) %] > <div class="alert alert-info">You can't reset your password.</div> > [% ELSIF (password_recovery) %] > <form action="/cgi-bin/koha/opac-password-recovery.pl" method="post" autocomplete="off"> >diff --git a/opac/opac-password-recovery.pl b/opac/opac-password-recovery.pl >index 6429f7b9a1..d66c2a9ca7 100755 >--- a/opac/opac-password-recovery.pl >+++ b/opac/opac-password-recovery.pl >@@ -42,6 +42,7 @@ my $errMultipleAccountsForEmail; > my $errAlreadyStartRecovery; > my $errTooManyEmailFound; > my $errBadEmail; >+my $errResetForbidden; > > #new password form error > my $errLinkNotValid; >@@ -73,36 +74,45 @@ if ( $query->param('sendEmail') || $query->param('resendEmail') ) { > $errMultipleAccountsForEmail = 1; > } > elsif ( $borrower = $search_results->next() ) { # One matching borrower >- my @emails = grep { $_ } ( $borrower->email, $borrower->emailpro, $borrower->B_email ); > >- my $firstNonEmptyEmail; >- $firstNonEmptyEmail = $emails[0] if @emails; >+ if ( $borrower->category->can_reset_password ) { > >- # Is the given email one of the borrower's ? >- if ( $email && !( grep /^$email$/i, @emails ) ) { >- $hasError = 1; >- $errNoBorrowerFound = 1; >- } >+ my @emails = grep { $_ } ( $borrower->email, $borrower->emailpro, $borrower->B_email ); > >- # If there is no given email, and there is no email on record >- elsif ( !$email && !$firstNonEmptyEmail ) { >- $hasError = 1; >- $errNoBorrowerEmail = 1; >- } >+ my $firstNonEmptyEmail; >+ $firstNonEmptyEmail = $emails[0] if @emails; >+ >+ # Is the given email one of the borrower's ? >+ if ( $email && !( grep /^$email$/i, @emails ) ) { >+ $hasError = 1; >+ $errNoBorrowerFound = 1; >+ } >+ >+ # If there is no given email, and there is no email on record >+ elsif ( !$email && !$firstNonEmptyEmail ) { >+ $hasError = 1; >+ $errNoBorrowerEmail = 1; >+ } > >-# Check if a password reset already issued for this borrower AND we are not asking for a new email >- elsif ( not $query->param('resendEmail') ) { >- if ( ValidateBorrowernumber( $borrower->borrowernumber ) ) { >- $hasError = 1; >- $errAlreadyStartRecovery = 1; >+ # Check if a password reset already issued for this >+ # borrower AND we are not asking for a new email >+ elsif ( not $query->param('resendEmail') ) { >+ if ( ValidateBorrowernumber( $borrower->borrowernumber ) ) { >+ $hasError = 1; >+ $errAlreadyStartRecovery = 1; >+ } >+ else { >+ DeleteExpiredPasswordRecovery( $borrower->borrowernumber ); >+ } > } >- else { >- DeleteExpiredPasswordRecovery( $borrower->borrowernumber ); >+ # Set the $email, if we don't have one. >+ if ( !$hasError && !$email ) { >+ $email = $firstNonEmptyEmail; > } > } >- # Set the $email, if we don't have one. >- if ( !$hasError && !$email ) { >- $email = $firstNonEmptyEmail; >+ else { >+ $hasError = 1; >+ $errResetForbidden = 1; > } > } > else { # 0 matching borrower >@@ -118,6 +128,7 @@ if ( $query->param('sendEmail') || $query->param('resendEmail') ) { > errBadEmail => $errBadEmail, > errNoBorrowerEmail => $errNoBorrowerEmail, > errMultipleAccountsForEmail => $errMultipleAccountsForEmail, >+ errResetForbidden => $errResetForbidden, > password_recovery => 1, > email => HTML::Entities::encode($email), > username => $username >-- >2.20.1
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 21890
:
84595
|
84596
|
84597
|
84598
|
84631
|
84632
|
84633
|
84634
|
85001
|
85002
|
85003
|
85004
|
85005
|
85006
|
86843
|
86844
|
86845
|
86846
|
86847
|
86866
|
86867
|
86868
|
86869
|
86870
|
86911
|
87289
|
87290
|
87291
|
87292
|
87293
|
87294
|
87295