Again, this might be outside the scope, but I also think the OPAC message could be improved. Right now, it says 'You entered an incorrect username or password. Please try again! But note that passwords are case sensitive and that your account will be locked out after a fixed number of failed login attempts. Please contact a library staff member if you continue to have problems.' I would add the number of failed attempts rather than 'after a fixed number of failed login attempts' And I would also change the message once the account is blocked. Right now, even if FailedLoginAttempts is at 2, you can try to log in 10 times and it will never tell you that your account is now blocked. I don't 100% understand these comments. I think that I agree that the Staff Client could be more descriptive about why the account is locked. As for the OPAC, we shouldn't indicate that the account has been locked, as that indicates to an attacker that the account exists, which is not a good idea from a security perspective. We have the same demand. I'm on it Created attachment 145502 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password * a link to reset login attempts to 0 Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" Reset login attempts to 0 feature uses members/setstatus.pl with resetloginattempts=y like reregistration=y for an expired patron To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page 7. Click on "Reset login attempts", page reloads and you see patron in unlocked Created attachment 145503 [details]
Screenshot of feature
You may ask to improve the text. We may add some text explaining the value of syspref FailedLoginAttempts, but maybe message would be too long. Reset login attempts as been asked by the library, this is a new feature. I hope it makes sens, otherwise I may create a new bug report. Created attachment 145589 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password * a link to reset login attempts to 0 Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" Reset login attempts to 0 feature uses members/setstatus.pl with resetloginattempts=y like reregistration=y for an expired patron To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page 7. Click on "Reset login attempts", page reloads and you see patron in unlocked Signed-off-by: Amaury GAU <amaury.gau@bulac.fr> Created attachment 145878 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password * a link to reset login attempts to 0 Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" Reset login attempts to 0 feature uses members/setstatus.pl with resetloginattempts=y like reregistration=y for an expired patron To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page 7. Click on "Reset login attempts", page reloads and you see patron in unlocked Signed-off-by: Amaury GAU <amaury.gau@bulac.fr> Signed-off-by: Solene Ngamga <solene.ngamga@inLibro.com> FAIL koha-tmpl/intranet-tmpl/prog/en/includes/patron_messages.inc FAIL filters wrong_html_filter at line 57 ( <a href="/cgi-bin/koha/members/member-password.pl?member=[% patron.borrowernumber | html %]">Change password</a>) Looking here (In reply to Fridolin Somers from comment #6) > Reset login attempts as been asked by the library, this is a new feature. > I hope it makes sens, otherwise I may create a new bug report. +my $resetloginattempts = $input->param('resetloginattempts') || ''; my $dbh = C4::Context->dbh; my $dateexpiry; @@ -54,6 +55,8 @@ if ( $logged_in_user->can_see_patron_infos($patron) ) { if ( $reregistration eq 'y' ) { # re-reregistration function to automatic calcul of date expiry $dateexpiry = $patron->renew_account; + } elsif ( $resetloginattempts eq 'y' ) { + $patron->login_attempts(0)->store; This is not expected here. Improve a message? Created attachment 147683 [details] [review] Bug 25947: (QA follow-up) Fix filter + or <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&destination=circ&resetloginattempts=y">Reset login attempts</a> You are doing this in an include file. Feels wrong. The setstatus.pl script certainly needs attention too: Reading comments like: #script to set or lift debarred status No longer true? # Ideally we should display a warning on the interface if the logged in user is # not allowed to modify this patron. # But a librarian is not supposed to hack the system No longer true? The code contains: my ( $loggedinuserid ) = checkauth($input, 0, { borrowers => 'edit_borrowers' }, 'intranet'); ... $logged_in_user->can_see_patron_infos Includes: permission => 'borrowers', subpermission => 'view_borrower_infos_from_any_libraries', => Feels like it is enough. But personally I would rather see a specific permission for things like password, and locked status? Instead of using this script with a GET operation, it feels better to use our REST API and do a PUT/PATCH patron operation? Conclusion: I think that you'd better split this into two reports. The reset operation needs more attention too. (In reply to solene.ngamga from comment #8) > 3. In the OPAC, try to log in with the username and a wrong password 3 times > 4. Go back to the patron's account in the staff interface > 5. Note that there is a message : "Patron's account has been locked (due to > 3 failed login attempts)" We really shouldn't be doing this. It's best practice not to tell an unauthenticated user that an account has been locked due to failed login attempts. It leaks information about system settings and user accounts. (In reply to David Cook from comment #16) > We really shouldn't be doing this. It's best practice not to tell an > unauthenticated user that an account has been locked due to failed login > attempts. It leaks information about system settings and user accounts. If we're going to do something insecure, we should wrap it in a system preference, default it to disabled, and have explanatory text on the system preference page saying it's an insecure setting. (In reply to David Cook from comment #17) > (In reply to David Cook from comment #16) > > We really shouldn't be doing this. It's best practice not to tell an > > unauthenticated user that an account has been locked due to failed login > > attempts. It leaks information about system settings and user accounts. > > If we're going to do something insecure, we should wrap it in a system > preference, default it to disabled, and have explanatory text on the system > preference page saying it's an insecure setting. I thin this is a misunderstanding. The patch is not about the message that the user sees, but about the message that staff will see. +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron_messages.inc The user receives a neutral message still. This is to help staff to see the reason why someone has been locked out. (In reply to Katrin Fischer from comment #18) > I thin this is a misunderstanding. The patch is not about the message that > the user sees, but about the message that staff will see. > > +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron_messages.inc > > The user receives a neutral message still. This is to help staff to see the > reason why someone has been locked out. Yep, looks I read that comment totally wrong! Maybe next time I'm surprised reading something I should slow down and just re-read the comments... [U+1F605]. (In reply to Fridolin Somers from comment #6) > Reset login attempts as been asked by the library, this is a new feature. > I hope it makes sens, otherwise I may create a new bug report. As noted above, please remove that part here. It needs more attention too. See earlier comments. Thanks. Created attachment 169844 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page Note: making QA obsolete too since it refers to a part of code removed from this bug Thanks a lot Baptiste. Some little things to fix : patron.account_locked) %] => patron.account_locked ) %] <span class="circ-hlt">Locked: </span></span> => <span class="circ-hlt">Locked: </span><span> right ? <a href="/cgi-bin/koha/members/member-password.pl?member=[% patron.borrowernumber | html %]">Change password</a> You need to use URI filter : https://template-toolkit.org/docs/manual/Filters.html#section_uri This is looking good at a glance! Created attachment 169853 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page Created attachment 169864 [details] [review] Bug 25947: Improve locked account message When using system preference 'FailedLoginAttempts', a patron's account is blocked after X many failed login attempts on the OPAC. This patch adds, like for "Patron's card has expired" message : * a message "Patron's account has been locked (due to X failed login attempts)" on the patron details and circulation pages * a link to change password Links are only displayed if libarian has permission to edit patrons. For administrative lock, only a message is displayed : "Patron's account has been administratively locked" To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)" 6. Click on "Change password", you go to change password page Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl> (In reply to Caroline Cyr La Rose from comment #0) > Also, there is no button to change the password next to the warning. When a > patron has unpaid fines or is in the wrong category, there is a button to > either pay/writeoff the fines or change the category next to the warning. I > would add a button that says 'Change password' next to the locked account > warning. This might be outside the scope of this bug, but I think it would > improve usability. Incidentally, just sent you a message about this topic on Mattermost ;) The normal lock could be resolved by the patron him/herself via password reset. Should we add a button to let staff do what a patron can do? Not sure :) The administrative lockout cannot be removed by a patron. So we should perhaps add the button there only. But perhaps it needs a bit more text? This lockout is there for some reason, a staff member should definitely not remove it without further thought? Please add your feedback. The patch somehow needs some tweaking still. (In reply to Marcel de Rooy from comment #26) > (In reply to Caroline Cyr La Rose from comment #0) > > > Also, there is no button to change the password next to the warning. When a > > patron has unpaid fines or is in the wrong category, there is a button to > > either pay/writeoff the fines or change the category next to the warning. I > > would add a button that says 'Change password' next to the locked account > > warning. This might be outside the scope of this bug, but I think it would > > improve usability. > > Incidentally, just sent you a message about this topic on Mattermost ;) > > The normal lock could be resolved by the patron him/herself via password > reset. Should we add a button to let staff do what a patron can do? Not sure > :) Imo we should. I feel like the use case for such a button is: a borrower comes to a librarian because they don't know what to do, the librarian looks at the account, see the message, and is happy to have access to the button right there on the sentence. We are not adding right to the staff member, since they already have this right. Last but not least: there is a Syspref OpacResetPassword which may prevent users from being allowed to reset their password, hence users must come to the librarian to reset their password. + I haven't checked but it would look very weird to me to be able to remove a security lock as a anonymous user, I'd rather remove the password reset functionality in such case, don't you think ? > > The administrative lockout cannot be removed by a patron. So we should > perhaps add the button there only. But perhaps it needs a bit more text? > This lockout is there for some reason, a staff member should definitely not > remove it without further thought? I don't get why there would be a button in this case, like a button to see the fines or something so ? > Please add your feedback. The patch somehow needs some tweaking still. (In reply to Marcel de Rooy from comment #26) > (In reply to Caroline Cyr La Rose from comment #0) > > > Also, there is no button to change the password next to the warning. When a > > patron has unpaid fines or is in the wrong category, there is a button to > > either pay/writeoff the fines or change the category next to the warning. I > > would add a button that says 'Change password' next to the locked account > > warning. This might be outside the scope of this bug, but I think it would > > improve usability. > > Incidentally, just sent you a message about this topic on Mattermost ;) I made a merge request for the manual (https://gitlab.com/koha-community/koha-manual/-/merge_requests/974). Hopefully it is clear... I did some testing to really understand these two "locks". "Lock": Created by the FailedLoginAttempts syspref. Can be removed by the patron by resetting their password (if OpacResetPassword is on), or by staff manually changing the password, or by staff sending a password recovery email (if OpacResetPassword is on). "Administrative lock: Created by the LockExpiredDelay syspref and cleanup_database cron job. Can be removed by staff manually changing the password, or by staff sending a password recovery email (if OpacResetPassword is on). The patron cannot ask for a recovery email through the OPAC (at least, it didn't work for me). > > The normal lock could be resolved by the patron him/herself via password > reset. Should we add a button to let staff do what a patron can do? Not sure > :) It can also be removed by manually changing the password from the staff interface. So a button on the staff side would still be useful. > > The administrative lockout cannot be removed by a patron. So we should > perhaps add the button there only. But perhaps it needs a bit more text? > This lockout is there for some reason, a staff member should definitely not > remove it without further thought? > > Please add your feedback. The patch somehow needs some tweaking still. Maybe the easiest solution would be a tooltip? Just to let staff know what is happening and how they can resolve it. Any staff who can edit patron accounts can change passwords. They can already do this, the button would simply be a shortcut. I'd be happy to keep taking over that patch but I am not sure of the work that has to be done are we okay about following changes ? 1 - Button for password reset is kept for "Lock" and text (tooltip ?) explains that resetting password will solve the pb 2 - For administrative lock, we add a tooltip to explain the librarian they can reset the password ? Shouldn't we then have a button in both cases since the action proposed to the librarian is twice the same ? I'm a bit lost /o/ (In reply to Baptiste Wojtkowski (bwoj) from comment #29) > I'd be happy to keep taking over that patch but I am not sure of the work > that has to be done are we okay about following changes ? > > 1 - Button for password reset is kept for "Lock" and text (tooltip ?) > explains that resetting password will solve the pb > 2 - For administrative lock, we add a tooltip to explain the librarian they > can reset the password ? > > Shouldn't we then have a button in both cases since the action proposed to > the librarian is twice the same ? I'm a bit lost /o/ Yes, it seems so ;) Created attachment 174271 [details] [review] Bug 25947: (follow-up) Improve locked account message Test plan: To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)". Note there is a tooltip at the right 6. Click on "Change password", you go to change password page Note: the follow-up might be unclear to understand: 1 - it moves the button outriste the IF patron.login_attempt < 0 2 - Hence it requires the </li> to be moved out so button remains on the lane 3 - Finally the <li> must be put before the if and changed a bit Created attachment 174272 [details] [review] Bug 25947: (follow-up) Improve locked account message Test plan: To test: 1. Change system preference 'FailedLoginAttempts' to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password 3 times 4. Go back to the patron's account in the staff interface 5. Note that there is a message : "Patron's account has been locked (due to 3 failed login attempts)". Note there is a tooltip at the right 6. Click on "Change password", you go to change password page Note: the follow-up might be unclear to understand: 1 - it moves the button outside the IF patron.login_attempt < 0 2 - Hence it requires the </li> to be moved out so button remains on the lane 3 - Finally the <li> must be put before the if and changed a bit |
Created attachment 106643 [details] Warning messages in the patron details When using FailedLoginAttempts, a patron's account is blocked after X many failed login attempts on the OPAC. When that happens, a message 'Account has been locked.' appears on the patron account details page. This message does not indicate why or how it was blocked. I suggest we change it to 'Account has been locked due to too many failed login attempts'. Furthermore, the font is dark red whereas the font for other warnings (such as wrong category or unpaid fines) is bright red and bold. To test: 1. Change FailedLoginAttempts to a small number, like 2 2. Go to a patron's account and copy their username (while you're there, change the password and add some fines, too) 3. In the OPAC, try to log in with the username and a wrong password several times 4. Go back to the patron's account in the staff interface 5. Note that there is no indication as to why the patron's account is locked and that the font color and weight does not match the other warnings. Also, there is no button to change the password next to the warning. When a patron has unpaid fines or is in the wrong category, there is a button to either pay/writeoff the fines or change the category next to the warning. I would add a button that says 'Change password' next to the locked account warning. This might be outside the scope of this bug, but I think it would improve usability.