- #validate password length & match
- if ( ($borrower_number)
- && ( $password eq $repeatPassword )
- && ( length($password) >= $minPassLength ) )
- { #apply changes
- Koha::Patrons->find($borrower_number)->update_password( $username, hash_password($password) );
- CompletePasswordRecovery($uniqueKey);
- $template->param(
- password_reset_done => 1,
- username => $username
- );
- }
- else { #errors
- if ( !$borrower_number ) { #parameters not valid
- $errLinkNotValid = 1;
- }
- elsif ( $password ne $repeatPassword ) { #passwords does not match
- $errPassNotMatch = 1;
- }
- elsif ( length($password) < $minPassLength ) { #password too short
- $errPassTooShort = 1;
+ my $error;
+ my $min_password_length = C4::Context->preference('minPasswordPreference');
+ my $require_strong_password = C4::Context->preference('RequireStrongPassword');
+ if ( not $borrower_number ) {
+ $error = 'errLinkNotValid';
+ } elsif ( $password ne $repeatPassword ) {
+ $error = 'errPassNotMatch';
+ } else {
+ my $borrower = Koha::Patrons->find($borrower_number);
+ $min_password_length = $borrower->category->effective_min_password_length;
+ $require_strong_password = $borrower->category->effective_require_strong_password;
+ try {
+ $borrower->set_password({ password => $password });
+
+ CompletePasswordRecovery($uniqueKey);
+ $template->param(
+ password_reset_done => 1,
+ username => $username
+ );