Commit 73ea7588 authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 575947: Users with passwords length less than 6 characters can't login after…

Bug 575947: Users with passwords length less than 6 characters can't login after migration from 3.4.x or older to 3.6 or newer r/a=mkanat
parent 3e06a51f
...@@ -151,8 +151,13 @@ sub _handle_login_result { ...@@ -151,8 +151,13 @@ sub _handle_login_result {
} }
} }
elsif ($fail_code == AUTH_ERROR) { elsif ($fail_code == AUTH_ERROR) {
if ($result->{user_error}) {
ThrowUserError($result->{error}, $result->{details});
}
else {
ThrowCodeError($result->{error}, $result->{details}); ThrowCodeError($result->{error}, $result->{details});
} }
}
elsif ($fail_code == AUTH_NODATA) { elsif ($fail_code == AUTH_NODATA) {
$self->{_info_getter}->fail_nodata($self) $self->{_info_getter}->fail_nodata($self)
if $login_type == LOGIN_REQUIRED; if $login_type == LOGIN_REQUIRED;
......
...@@ -74,6 +74,12 @@ sub check_credentials { ...@@ -74,6 +74,12 @@ sub check_credentials {
}; };
} }
# Force the user to type a longer password if it's too short.
if (length($password) < USER_PASSWORD_MIN_LENGTH) {
return { failure => AUTH_ERROR, error => 'password_current_too_short',
user_error => 1, details => { locked_user => $user } };
}
# The user's credentials are okay, so delete any outstanding # The user's credentials are okay, so delete any outstanding
# password tokens or login failures they may have generated. # password tokens or login failures they may have generated.
Bugzilla::Token::DeletePasswordTokens($user->id, "user_logged_in"); Bugzilla::Token::DeletePasswordTokens($user->id, "user_logged_in");
......
...@@ -103,6 +103,7 @@ use constant WS_ERROR_CODE => { ...@@ -103,6 +103,7 @@ use constant WS_ERROR_CODE => {
auth_invalid_email => 302, auth_invalid_email => 302,
extern_id_conflict => -303, extern_id_conflict => -303,
auth_failure => 304, auth_failure => 304,
password_current_too_short => 305,
# Except, historically, AUTH_NODATA, which is 410. # Except, historically, AUTH_NODATA, which is 410.
login_required => 410, login_required => 410,
......
...@@ -331,6 +331,11 @@ The username does not exist, or the password is wrong. ...@@ -331,6 +331,11 @@ The username does not exist, or the password is wrong.
The account has been disabled. A reason may be specified with the The account has been disabled. A reason may be specified with the
error. error.
=item 305 (New Password Required)
The current password is correct, but the user is asked to change
his password.
=item 50 (Param Required) =item 50 (Param Required)
A login or password parameter was not provided. A login or password parameter was not provided.
......
...@@ -24,11 +24,11 @@ ...@@ -24,11 +24,11 @@
title = title title = title
onload = "document.forms['confirm_account_form'].realname.focus();" %] onload = "document.forms['confirm_account_form'].realname.focus();" %]
<div> <p>
To create your account, you must enter a password in the form below. To create your account, you must enter a password in the form below.
Your email address and Real Name (if provided) will be shown with Your email address and Real Name (if provided) will be shown with
changes you make. changes you make.
</div> </p>
<form id="confirm_account_form" method="post" action="token.cgi"> <form id="confirm_account_form" method="post" action="token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]"> <input type="hidden" name="t" value="[% token FILTER html %]">
...@@ -44,7 +44,10 @@ ...@@ -44,7 +44,10 @@
</tr> </tr>
<tr> <tr>
<th align="right"><label for="passwd1">Type your password</label>:</th> <th align="right"><label for="passwd1">Type your password</label>:</th>
<td><input type="password" id="passwd1" name="passwd1" value=""></td> <td>
<input type="password" id="passwd1" name="passwd1" value="">
(minimum [% constants.USER_PASSWORD_MIN_LENGTH FILTER none %] characters)
</td>
</tr> </tr>
<tr> <tr>
<th align="right"><label for="passwd2">Confirm your password</label>:</th> <th align="right"><label for="passwd2">Confirm your password</label>:</th>
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
<th align="right">New Password:</th> <th align="right">New Password:</th>
<td> <td>
<input type="password" name="password"> <input type="password" name="password">
(minimum [% constants.USER_PASSWORD_MIN_LENGTH FILTER none %] characters)
</td> </td>
</tr> </tr>
......
...@@ -1301,6 +1301,14 @@ ...@@ -1301,6 +1301,14 @@
[% title = "Passwords Don't Match" %] [% title = "Passwords Don't Match" %]
The two passwords you entered did not match. The two passwords you entered did not match.
[% ELSIF error == "password_current_too_short" %]
[% title = "New Password Required" %]
Your password is currently less than
[%+ constants.USER_PASSWORD_MIN_LENGTH FILTER html %] characters long,
which is the new minimum length required for passwords.
You must <a href="token.cgi?a=reqpw&loginname=[% locked_user.email FILTER html %]">
request a new password</a> in order to log in again.
[% ELSIF error == "password_too_short" %] [% ELSIF error == "password_too_short" %]
[% title = "Password Too Short" %] [% title = "Password Too Short" %]
The password must be at least The password must be at least
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment