* Finish task #6542.

This commit is contained in:
Yagami
2019-11-20 10:00:56 +08:00
parent e193e27ebc
commit 24ca9fbc01
2 changed files with 58 additions and 16 deletions
+24 -12
View File
@@ -692,16 +692,19 @@ class user extends control
die(helper::removeUTF8Bom(json_encode(array('status' => 'success') + $data)));
}
$response['result'] = 'success';
if(strpos($this->referer, $loginLink) === false and
strpos($this->referer, $denyLink) === false and
strpos($this->referer, 'block') === false and $this->referer
)
{
die(js::locate($this->referer, 'parent'));
$response['locate'] = $this->referer;
$this->send($response);
}
else
{
die(js::locate($this->createLink($this->config->default->module), 'parent'));
$response['locate'] = $this->config->default->module;
$this->send($response);
}
}
@@ -718,9 +721,10 @@ class user extends control
$account = trim($account);
if($this->user->checkLocked($account))
{
$failReason = sprintf($this->lang->user->loginLocked, $this->config->user->lockMinutes);
$response['result'] = 'fail';
$response['message'] = sprintf($this->lang->user->loginLocked, $this->config->user->lockMinutes);
if($this->app->getViewType() == 'json') die(helper::removeUTF8Bom(json_encode(array('status' => 'failed', 'reason' => $failReason))));
die(js::error($failReason));
$this->send($response);
}
$user = $this->user->identify($account, $password);
@@ -768,13 +772,16 @@ class user extends control
$method = str_replace('f=', '', $method);
}
$response['result'] = 'success';
if(common::hasPriv($module, $method))
{
die(js::locate($this->post->referer, 'parent'));
$response['locate'] = $this->post->referer;
$this->send($response);
}
else
{
die(js::locate($this->createLink($this->config->default->module), 'parent'));
$response['locate'] = $this->config->default->module;
$this->send($response);
}
}
else
@@ -784,26 +791,31 @@ class user extends control
$data = $this->user->getDataInJSON($user);
die(helper::removeUTF8Bom(json_encode(array('status' => 'success') + $data)));
}
die(js::locate($this->createLink($this->config->default->module), 'parent'));
$response['locate'] = $this->config->default->module;
$response['result'] = 'success';
$this->send($response);
}
}
else
{
$response['result'] = 'fail';
$fails = $this->user->failPlus($account);
if($this->app->getViewType() == 'json') die(helper::removeUTF8Bom(json_encode(array('status' => 'failed', 'reason' => $this->lang->user->loginFailed))));
$remainTimes = $this->config->user->failTimes - $fails;
if($remainTimes <= 0)
{
die(js::error(sprintf($this->lang->user->loginLocked, $this->config->user->lockMinutes)));
$response['message'] = sprintf($this->lang->user->loginLocked, $this->config->user->lockMinutes);
$this->send($response);
}
else if($remainTimes <= 3)
{
die(js::error(sprintf($this->lang->user->lockWarning, $remainTimes)));
$response['message'] = sprintf($this->lang->user->lockWarning, $remainTimes);
$this->send($response);
}
$errorScript = js::error($this->lang->user->loginFailed);
if($this->post->verifyRand and !isset($_SESSION['rand'])) $errorScript .= js::reload('parent'); // Finish task #4851.
die($errorScript);
$response['message'] = $this->lang->user->loginFailed;
$this->send($response);
}
}
else
+34 -4
View File
@@ -24,13 +24,43 @@ $(document).ready(function()
$('#loginPanel #submit').click(function()
{
var account = $('#account').val().trim();
var password = $('input:password').val().trim();
var passwordStrength = computePasswordStrength(password);
if($('#loginPanel #passwordStrength').length == 0) $(this).after("<input type='hidden' name='passwordStrength' id='passwordStrength' value='0' />");
$('#loginPanel #passwordStrength').val(passwordStrength);
var rand = $('input#verifyRand').val();
var referer = $('#referer').val();
var link = createLink('user', 'login');
var keepLogin = $('#keepLoginon').attr('checked') == 'checked' ? 1 : 0;
var rand = $('input#verifyRand').val();
if(password.length != 32 && typeof(md5) == 'function') $('input:password').val(md5(md5(password) + rand));
$.ajax
({
url: link,
dataType: 'json',
method: 'POST',
data:
{
"account": account,
"password": md5(md5(password) + rand),
'passwordStrength' : passwordStrength,
'referer' : referer,
'verifyRand' : rand,
'keepLogin' : keepLogin,
},
success:function(data)
{
if(data.result == 'fail')
{
alert(data.message);
return false;
}
else
{
location.href = data.locate;
}
}
})
return false;
});
});