Under the auspices of the recently issued European legislation regarding data privacy (GDPR), the Portuguese government has issued a series of mandatory requirements, as well as general recommendations, for software applications that are implemented under the umbrella of public bodies (RCM 41/2018). Since Koha is mostly used by municipalities and universities in Portugal, some of these mandatory requirements need to be address by Koha implementers in Portugal. We believe that this requirement is also useful for the community at large. Here’s a description of the requirement. *** Requirement description *** The application MUST record the time of a user last logged in. It should have a method to inactivate users that haven’t logged into the application for over X number of months (new setting). *** Scope *** Applies to implementations where user authentication is handled by Koha.
What do you mean by "inactivate users"? I am no expert on GDPR, but from what I have seen, I would expect the requirement to be that patrons who have not been active for a given period of time should be deleted completely, also from the deletedborrowers table?
The last logon time is recorded in Koha if one enables it in preferences (TrackLastPatronActivity). It's also possible to delete patron information based on the last logon time with delete_patrons.pl cronjob.
The legislation says that the users should be blocked (debarred) after some months of inactivity. Few months later they can be removed/deleted if they are still inactive. TrackLastPatronActivity should be enough to create a script to block all inactive users.
Hi Vitor, for documentation purposes, could you add a link to a source here?
The official document can be found in this link: https://dre.pt/application/conteudo/114937034
Adding a see also to bug 21336 (processing unsubscribes). There is a considerable overlap with this report.
Bug 21336 adds a Patrons method lock (wrapper for Koha Patron lock). So you only need to add a simple search. Something like: Koha::Patrons->search({ login_attempts => { '>=', pref_value }, lastseen => { '<', some_date }) -> lock; Lock adds the option expire => 1 setting the expire date. Effectively disallowing holds, issues, etc. And the option remove => 1 for removing holds and article requests. So most work done already..