Bug 17746: Add misc/admin/set_password.pl script
This patch introduces a script that allows changing a patron's password.
The change overrides the defined password enforcement policy.
If multiple conditions are passed to match on the patron, they all need
to match. Otherwise an error message is printed.
Attributes to search the patron on:
- cardnumber
- patron_id (a.k.a. borrowernumber)
- userid
we usually know some of them, but if we specify more than one, they need
to match a patron, together.
To test:
1) Apply this patch
2) Have a known patron (i.e. you know the cardnumber, the borrowernumber
and the userid).
3) Run:
$ kshell
k$ perl misc/admin/set_password.pl --cardnumber <the_card_number> \
--password a_password
4) Verify you can login with the new password
5) Repeat 3) through 5) with --patron_id and --userid
=> SUCCESS: You can login in all cases
6) Try combining some or all the parameters
=> SUCCESS: It fails when it should, it succeeds when it should
7) Sign off :-D
Signed-off-by: Pierre-Marc Thibault <pierre-marc.thibault@inLibro.com>
Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
parent
0cd4ca289b
commit
e2f6542e1e
|
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Copyright 2019 Koha Development Team
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||
|
||||
use Modern::Perl;
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
|
||||
use Koha::Patrons;
|
||||
|
||||
my ( $help, $password, $cardnumber, $patron_id, $userid );
|
||||
GetOptions(
|
||||
'help|?' => \$help,
|
||||
'userid=s' => \$userid,
|
||||
'password=s' => \$password,
|
||||
'patron_id=s' => \$patron_id,
|
||||
'cardnumber=s' => \$cardnumber,
|
||||
);
|
||||
|
||||
pod2usage(1) if $help;
|
||||
pod2usage("password is mandatory") unless $password;
|
||||
|
||||
unless ( $userid or $patron_id or $cardnumber ) {
|
||||
pod2usage("userid is mandatory") unless $userid;
|
||||
pod2usage("patron_id is mandatory") unless $patron_id;
|
||||
pod2usage("cardnumber is mandatory") unless $cardnumber;
|
||||
}
|
||||
|
||||
my $filter;
|
||||
|
||||
if ( $userid ) {
|
||||
$filter->{userid} = $userid;
|
||||
}
|
||||
|
||||
if ( $cardnumber ) {
|
||||
$filter->{cardnumber} = $cardnumber;
|
||||
}
|
||||
|
||||
if ( $patron_id ) {
|
||||
$filter->{borrowernumber} = $patron_id;
|
||||
}
|
||||
|
||||
my $patrons = Koha::Patrons->search( $filter );
|
||||
|
||||
unless ( $patrons->count > 0 ) {
|
||||
pod2usage( "No patron found matching the specified criteria" );
|
||||
}
|
||||
|
||||
my $patron = $patrons->next;
|
||||
$patron->set_password({ password => $password, skip_validation => 1 });
|
||||
|
||||
=head1 NAME
|
||||
|
||||
set_password.pl - Set the specified password for the user in Koha
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
set_password.pl
|
||||
--userid <userid> --password <password> --patron_id <patron_id> --cardnumber <cardnumber>
|
||||
|
||||
Options:
|
||||
-?|--help brief help message
|
||||
--password the password to be set
|
||||
--userid the userid to be used to find the patron
|
||||
--patron_id the borrowernumber for the patron
|
||||
--cardnumber the cardnumber for the patron
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--help|-?>
|
||||
|
||||
Print a brief help message and exits
|
||||
|
||||
=item B<--userid>
|
||||
|
||||
The patron's userid (for finding the patron)
|
||||
|
||||
=item B<--password>
|
||||
|
||||
The password to be set in the database
|
||||
|
||||
=item B<--patron_id>
|
||||
|
||||
The patron's internal id (for finding the patron)
|
||||
|
||||
=item B<--cardnumber>
|
||||
|
||||
Patron's cardnumber (for finding the patron)
|
||||
|
||||
=back
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
A simple script to change an existing's user password in the Koha database
|
||||
|
||||
=cut
|
||||
Loading…
Reference in New Issue