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

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

Return to bug 17006