X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fmember-password.pl;h=0e4db74567a6c9e879acb6039fe7263e42ee606b;hb=a723bbaf1b564bf18ec9f477a3269b8b17033639;hp=cb922da43c10504783c06d809543d3d30e7d6441;hpb=9af6c4e34bc41616c03bb786201a9c10ebf13dab;p=koha.git diff --git a/members/member-password.pl b/members/member-password.pl index cb922da43c..0e4db74567 100755 --- a/members/member-password.pl +++ b/members/member-password.pl @@ -4,8 +4,7 @@ #by chris@katipo.co.nz #converted to using templates 3/16/03 by mwhansen@hmc.edu -use strict; -use warnings; +use Modern::Perl; use C4::Auth; use Koha::AuthUtils; @@ -15,6 +14,7 @@ use C4::Members; use C4::Circulation; use CGI qw ( -utf8 ); use C4::Members::Attributes qw(GetBorrowerAttributes); +use Koha::AuthUtils; use Koha::Token; use Koha::Patrons; @@ -32,14 +32,11 @@ my ( $template, $loggedinuser, $cookie, $staffflags ) = get_template_and_user( query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { borrowers => 1 }, + flagsrequired => { borrowers => 'edit_borrowers' }, debug => 1, } ); -my $flagsrequired; -$flagsrequired->{borrowers} = 1; - my $member = $input->param('member'); my $cardnumber = $input->param('cardnumber'); my $destination = $input->param('destination'); @@ -48,11 +45,9 @@ my $newpassword2 = $input->param('newpassword2'); my @errors; +my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in"; my $patron = Koha::Patrons->find( $member ); -unless ( $patron ) { - print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$member"); - exit; -} +output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); my $category_type = $patron->category->category_type; my $bor = $patron->unblessed; @@ -66,10 +61,16 @@ if ( ( $member ne $loggedinuser ) && ( $category_type eq 'S' ) ) { push( @errors, 'NOMATCH' ) if ( ( $newpassword && $newpassword2 ) && ( $newpassword ne $newpassword2 ) ); -my $minpw = C4::Context->preference('minPasswordLength'); -push( @errors, 'SHORTPASSWORD' ) if ( $newpassword && $minpw && ( length($newpassword) < $minpw ) ); +if ( $newpassword and not @errors ) { + my ( $is_valid, $error ) = Koha::AuthUtils::is_password_valid( $newpassword ); + unless ( $is_valid ) { + push @errors, 'ERROR_password_too_short' if $error eq 'too_short'; + push @errors, 'ERROR_password_too_weak' if $error eq 'too_weak'; + push @errors, 'ERROR_password_has_whitespaces' if $error eq 'has_whitespaces'; + } +} -if ( $newpassword && !scalar(@errors) ) { +if ( $newpassword and not @errors) { die "Wrong CSRF token" unless Koha::Token->new->check_csrf({ @@ -93,29 +94,13 @@ if ( $newpassword && !scalar(@errors) ) { push( @errors, 'BADUSERID' ); } } -else { - my $userid = $bor->{'userid'}; - - my $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - my $length = int( rand(2) ) + C4::Context->preference("minPasswordLength"); - my $defaultnewpassword = ''; - for ( my $i = 0 ; $i < $length ; $i++ ) { - $defaultnewpassword .= substr( $chars, int( rand( length($chars) ) ), 1 ); - } - - $template->param( defaultnewpassword => $defaultnewpassword ); -} if ( $category_type eq 'C') { my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; - $template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1; + $template->param( 'catcode' => $patron_categories->next->categorycode ) if $patron_categories->count == 1; } -$template->param( adultborrower => 1 ) if ( $category_type =~ /^(A|I)$/ ); - -$template->param( picture => 1 ) if $patron->image; - if ( C4::Context->preference('ExtendedPatronAttributes') ) { my $attributes = GetBorrowerAttributes( $bor->{'borrowernumber'} ); $template->param( @@ -125,33 +110,8 @@ if ( C4::Context->preference('ExtendedPatronAttributes') ) { } $template->param( - othernames => $bor->{'othernames'}, - surname => $bor->{'surname'}, - firstname => $bor->{'firstname'}, - borrowernumber => $bor->{'borrowernumber'}, - cardnumber => $bor->{'cardnumber'}, - categorycode => $bor->{'categorycode'}, - category_type => $category_type, - categoryname => $bor->{'description'}, - address => $bor->{address}, - address2 => $bor->{'address2'}, - streettype => $bor->{streettype}, - city => $bor->{'city'}, - state => $bor->{'state'}, - zipcode => $bor->{'zipcode'}, - country => $bor->{'country'}, - phone => $bor->{'phone'}, - phonepro => $bor->{'phonepro'}, - streetnumber => $bor->{'streetnumber'}, - mobile => $bor->{'mobile'}, - email => $bor->{'email'}, - emailpro => $bor->{'emailpro'}, - branchcode => $bor->{'branchcode'}, - userid => $bor->{'userid'}, + patron => $patron, destination => $destination, - is_child => ( $category_type eq 'C' ), - minPasswordLength => $minpw, - RoutingSerials => C4::Context->preference('RoutingSerials'), csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID'), }), );