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

(-)a/Koha/REST/V1/Patron.pm (-7 / +6 lines)
Lines 50-70 sub changepassword { Link Here
50
    my $patron = Koha::Patrons->find($args->{borrowernumber});
50
    my $patron = Koha::Patrons->find($args->{borrowernumber});
51
51
52
    my $OpacPasswordChange = C4::Context->preference("OpacPasswordChange");
52
    my $OpacPasswordChange = C4::Context->preference("OpacPasswordChange");
53
    unless ( $user
53
    my $haspermission = haspermission($user->userid, {borrowers => 1});
54
        && ( ($OpacPasswordChange && $user->borrowernumber == $args->{borrowernumber})
54
    unless ($OpacPasswordChange && $user->borrowernumber == $args->{borrowernumber}
55
            || haspermission($user->userid, {borrowers => 1}) ) )
55
            || $haspermission) {
56
    {
57
        return $c->$cb({ error => "OPAC password change is disabled" }, 403);
56
        return $c->$cb({ error => "OPAC password change is disabled" }, 403);
58
    }
57
    }
59
    return $c->$cb({ error => "Patron not found." }, 404) unless $patron;
58
    return $c->$cb({ error => "Patron not found." }, 404) unless $patron;
60
59
61
    my $pw = $args->{'body'};
60
    my $pw = $args->{'body'};
62
    my $dbh = C4::Context->dbh;
61
    my $dbh = C4::Context->dbh;
63
    unless (checkpw_internal($dbh, $user->userid, $pw->{'current_password'})) {
62
    unless ($haspermission
63
            || checkpw_internal($dbh, $patron->userid, $pw->{'current_password'})) {
64
        return $c->$cb({ error => "Wrong current password." }, 400);
64
        return $c->$cb({ error => "Wrong current password." }, 400);
65
    }
65
    }
66
66
67
    my ($success, $errmsg) = $user->change_password_to($pw->{'new_password'});
67
    my ($success, $errmsg) = $patron->change_password_to($pw->{'new_password'});
68
    if ($errmsg) {
68
    if ($errmsg) {
69
        return $c->$cb({ error => $errmsg }, 400);
69
        return $c->$cb({ error => $errmsg }, 400);
70
    }
70
    }
71
- 

Return to bug 17006