X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-passwd.pl;h=ca502aba947d15858ab1072bb028732ba06fe20a;hb=1087af6ece90ae41008660c47efb01c69d21ea62;hp=a1440c952d5579d2a7e4436a50388f01d7e58398;hpb=c52e5b61dd0a7e0679c912cf50e57835bbe44771;p=koha.git diff --git a/opac/opac-passwd.pl b/opac/opac-passwd.pl index a1440c952d..ca502aba94 100755 --- a/opac/opac-passwd.pl +++ b/opac/opac-passwd.pl @@ -19,70 +19,102 @@ # Suite 330, Boston, MA 02111-1307 USA use strict; -require Exporter; +use warnings; + use CGI; -use C4::Auth; # checkauth, getborrowernumber. +use C4::Auth; # checkauth, getborrowernumber. use C4::Context; use Digest::MD5 qw(md5_base64); -use C4::Circulation::Circ2; -use HTML::Template; -use C4::Interface::CGI::Output; +use C4::Circulation; +use C4::Members; +use C4::Output; my $query = new CGI; -my $dbh = C4::Context->dbh; +my $dbh = C4::Context->dbh; -my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "opac-passwd.tmpl", - query => $query, - type => "opac", - authnotrequired => 0, - flagsrequired => {borrow => 1}, - debug => 1, - }); +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-passwd.tmpl", + query => $query, + type => "opac", + authnotrequired => 0, + flagsrequired => { borrow => 1 }, + debug => 1, + } +); # get borrower information .... -my ($borr, $flags) = getpatroninformation(undef, $borrowernumber); -my $sth = $dbh->prepare("UPDATE borrowers SET password = ? WHERE borrowernumber=?"); - -if ( $query->param('Oldkey') && $query->param('Newkey') && $query->param('Confirm') ){ - if ( goodkey($dbh,$borrowernumber, $query->param('Oldkey')) ){ - if ( $query->param('Newkey') eq $query->param('Confirm') && - length($query->param('Confirm')) > 5 ){ # Record password - my $clave = md5_base64($query->param('Newkey')); - $sth->execute($clave,$borrowernumber); - $template->param('password_updated' => '1'); - $template->param('borrowernumber' => $borrowernumber); - }elsif ( $query->param('Newkey') ne $query->param('Confirm') ){ - $template->param('Ask_data' => '1'); - $template->param('Error_messages' => '1'); - $template->param('PassMismatch' => '1'); - }elsif (length($query->param('Confirm')) <= 5 ){ - $template->param('Ask_data' => '1'); - $template->param('Error_messages' => '1'); - $template->param('ShortPass' => '1'); - }else{ - $template->param('Error_messages' => '1'); - } - }else{ - $template->param('Ask_data' => '1'); - $template->param('Error_messages' => '1'); - $template->param('WrongPass' => '1'); +my ( $borr ) = GetMemberDetails( $borrowernumber ); +my $sth = $dbh->prepare("UPDATE borrowers SET password = ? WHERE borrowernumber=?"); +my $minpasslen = C4::Context->preference("minPasswordLength"); +if ( $query->param('Oldkey') + && $query->param('Newkey') + && $query->param('Confirm') ) +{ + if ( goodkey( $dbh, $borrowernumber, $query->param('Oldkey') ) ) { + if ( $query->param('Newkey') eq $query->param('Confirm') + && length( $query->param('Confirm') ) >= $minpasslen ) + { # Record password + my $clave = md5_base64( $query->param('Newkey') ); + $sth->execute( $clave, $borrowernumber ); + $template->param( 'password_updated' => '1' ); + $template->param( 'borrowernumber' => $borrowernumber ); + } + elsif ( $query->param('Newkey') ne $query->param('Confirm') ) { + $template->param( 'Ask_data' => '1' ); + $template->param( 'Error_messages' => '1' ); + $template->param( 'PassMismatch' => '1' ); + } + elsif ( length( $query->param('Confirm') ) < $minpasslen ) { + $template->param( 'Ask_data' => '1' ); + $template->param( 'Error_messages' => '1' ); + $template->param( 'ShortPass' => '1' ); + } + else { + $template->param( 'Error_messages' => '1' ); + } + } + else { + $template->param( 'Ask_data' => '1' ); + $template->param( 'Error_messages' => '1' ); + $template->param( 'WrongPass' => '1' ); + } +} +else { + + # Called Empty, Ask for data. + $template->param( 'Ask_data' => '1' ); + if (!$query->param('Oldkey') && ($query->param('Newkey') || $query->param('Confirm'))){ + # Old password is empty but one of the others isnt + $template->param( 'Error_messages' => '1' ); + $template->param( 'WrongPass' => '1' ); + } + elsif ($query->param('Oldkey') && (!$query->param('Newkey') || !$query->param('Confirm'))){ + # Oldpassword is entered but one of the other fields is empty + $template->param( 'Error_messages' => '1' ); + $template->param( 'PassMismatch' => '1' ); } -}else { -# Called Empty, Ask for data. - $template->param('Ask_data' => '1'); } -output_html_with_http_headers $query, $cookie, $template->output; +$template->param(firstname => $borr->{'firstname'}, + surname => $borr->{'surname'}, + minpasslen => $minpasslen, + passwdview => 1, +); + +output_html_with_http_headers $query, $cookie, $template->output; sub goodkey { -my ($dbh, $borrowernumber, $key) = @_; + my ( $dbh, $borrowernumber, $key ) = @_; - my $sth=$dbh->prepare("SELECT password FROM borrowers WHERE borrowernumber=?"); - $sth->execute($borrowernumber); - if ($sth->rows){ - my ($md5password) = $sth->fetchrow; - if (md5_base64($key) eq $md5password) { return 1; } else { return 0; } - }else{ return 0; } + my $sth = + $dbh->prepare("SELECT password FROM borrowers WHERE borrowernumber=?"); + $sth->execute($borrowernumber); + if ( $sth->rows ) { + my ($md5password) = $sth->fetchrow; + if ( md5_base64($key) eq $md5password ) { return 1; } + else { return 0; } + } + else { return 0; } }