View | Details | Raw Unified | Return to bug 21178
Collapse All | Expand All

(-)a/Koha/Patron.pm (-1 / +61 lines)
Lines 32-37 use Koha::AuthUtils; Link Here
32
use Koha::Checkouts;
32
use Koha::Checkouts;
33
use Koha::Database;
33
use Koha::Database;
34
use Koha::DateUtils;
34
use Koha::DateUtils;
35
use Koha::Exceptions::Password;
35
use Koha::Holds;
36
use Koha::Holds;
36
use Koha::Old::Checkouts;
37
use Koha::Old::Checkouts;
37
use Koha::Patron::Categories;
38
use Koha::Patron::Categories;
Lines 652-657 sub update_password { Link Here
652
    return $digest;
653
    return $digest;
653
}
654
}
654
655
656
=head3 set_password
657
658
    $patron->set_password( $plain_text_password );
659
660
Set the patron's password.
661
662
=head4 Exceptions
663
664
The passed string is validated against the current password enforcement policy.
665
Exceptions are thrown if the password is not good enough.
666
667
=over 4
668
669
=item Koha::Exceptions::Password::TooShort
670
671
=item Koha::Exceptions::Password::TrailingWhitespaces
672
673
=item Koha::Exceptions::Password::TooWeak
674
675
=back
676
677
=cut
678
679
sub set_password {
680
    my ( $self, $password ) = @_;
681
682
    my ( $is_valid, $error ) = Koha::AuthUtils::is_password_valid( $password );
683
684
    if ( !$is_valid ) {
685
        if ( $error eq 'too_short' ) {
686
            my $min_length = C4::Context->preference('minPasswordLength');
687
            $min_length = 3 if not $min_length or $min_length < 3;
688
689
            my $password_length = length($password);
690
            Koha::Exceptions::Password::TooShort->throw(
691
                { length => $password_length, min_length => $min_length } );
692
        }
693
        elsif ( $error eq 'has_whitespaces' ) {
694
            Koha::Exceptions::Password::TrailingWhitespaces->throw(
695
                "Password contains trailing spaces, which is forbidden.");
696
        }
697
        elsif ( $error eq 'too_weak' ) {
698
            Koha::Exceptions::Password::TooWeak->throw();
699
        }
700
    }
701
702
    my $digest = Koha::AuthUtils::hash_password($password);
703
    $self->update(
704
        {   password       => $digest,
705
            login_attempts => 0,
706
        }
707
    );
708
709
    logaction( "MEMBERS", "CHANGE PASS", $self->borrowernumber, "" )
710
        if C4::Context->preference("BorrowersLog");
711
712
    return $self;
713
}
714
715
655
=head3 renew_account
716
=head3 renew_account
656
717
657
my $new_expiry_date = $patron->renew_account
718
my $new_expiry_date = $patron->renew_account
658
- 

Return to bug 21178