$user = $users->select(nickname => $args->{nickname});
}
- if (!$user) {
+ my $hashed = $user ? $user->{passwd} : $args->{hashed};
+ if (!$hashed) {
$self->last_error("INVALID_USER");
return;
}
return;
}
- my $rs = $self->compare_password($password, $user->{passwd});
- if (!$rs && $self->_compare_password_compat($password,
- $user->{passwd},
- $users->{uid}, 0, 1)) {
- $self->last_error("INVALID_PASSWORD");
- return;
+ my $rs = $self->compare_password($password, $hashed);
+ return 1 if $rs;
+
+ if ($user && $self->_compare_password_compat($password,
+ $hashed,
+ $users->{uid}, 0, 1)) {
+ return 1;
}
- return 1;
+ $self->last_error("INVALID_PASSWORD");
+ return;
}
#========================================================================