Merge pull request #1213 from TheSerapher/issue-670-unlocks
[IMPROVED] Unlock notification mails on auto-locks
This commit is contained in:
commit
017a56549d
@ -124,7 +124,7 @@ class User extends Base {
|
||||
}
|
||||
}
|
||||
if ($this->isLocked($this->getUserId($username))) {
|
||||
$this->setErrorMessage("Account is locked. Please contact site support.");
|
||||
$this->setErrorMessage('Account locked.');
|
||||
return false;
|
||||
}
|
||||
if ($this->checkUserPassword($username, $password)) {
|
||||
@ -136,8 +136,16 @@ class User extends Base {
|
||||
if ($id = $this->getUserId($username)) {
|
||||
$this->incUserFailed($id);
|
||||
// Check if this account should be locked
|
||||
if (isset($this->config['maxfailed']['login']) && $this->getUserFailed($id) >= $this->config['maxfailed']['login'])
|
||||
if (isset($this->config['maxfailed']['login']) && $this->getUserFailed($id) >= $this->config['maxfailed']['login']) {
|
||||
$this->changeLocked($id);
|
||||
if ($token = $this->token->createToken('account_unlock', $id)) {
|
||||
$aData['token'] = $token;
|
||||
$aData['username'] = $username;
|
||||
$aData['email'] = $this->getUserEmail($username);;
|
||||
$aData['subject'] = 'Account auto-locked';
|
||||
$this->mail->sendMail('notifications/locked', $aData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -162,12 +170,20 @@ class User extends Base {
|
||||
// Check if this account should be locked
|
||||
if (isset($this->config['maxfailed']['pin']) && $this->getUserPinFailed($userId) >= $this->config['maxfailed']['pin']) {
|
||||
$this->changeLocked($userId);
|
||||
if ($token = $this->token->createToken('account_unlock', $userId)) {
|
||||
$username = $this->getUserName($userId);
|
||||
$aData['token'] = $token;
|
||||
$aData['username'] = $username;
|
||||
$aData['email'] = $this->getUserEmail($username);;
|
||||
$aData['subject'] = 'Account auto-locked';
|
||||
$this->mail->sendMail('notifications/locked', $aData);
|
||||
}
|
||||
$this->logoutUser();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function generatePin($userID, $current) {
|
||||
public function generatePin($userID, $current) {
|
||||
$this->debug->append("STA " . __METHOD__, 4);
|
||||
$username = $this->getUserName($userID);
|
||||
$email = $this->getUserEmail($username);
|
||||
|
||||
20
public/include/pages/account/unlock.inc.php
Normal file
20
public/include/pages/account/unlock.inc.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
// Make sure we are called from index.php
|
||||
if (!defined('SECURITY')) die('Hacking attempt');
|
||||
|
||||
// Confirm an account by token
|
||||
if (!isset($_GET['token']) || empty($_GET['token'])) {
|
||||
$_SESSION['POPUP'][] = array('CONTENT' => 'Missing token', 'TYPE' => 'errormsg');
|
||||
} else if (!$aToken = $oToken->getToken($_GET['token'], 'account_unlock')) {
|
||||
$_SESSION['POPUP'][] = array('CONTENT' => 'Unable to re-activate your account. Invalid token.', 'TYPE' => 'errormsg');
|
||||
} else {
|
||||
if ($user->setUserFailed($aToken['account_id'], 0) && $user->setUserPinFailed($aToken['account_id'], 0) && $user->changeLocked($aToken['account_id'])) {
|
||||
$oToken->deleteToken($aToken['token']);
|
||||
$_SESSION['POPUP'][] = array('CONTENT' => 'Account re-activated. Please login.');
|
||||
} else {
|
||||
$_SESSION['POPUP'][] = array('CONTENT' => 'Failed to re-activate account. Contact site support.', 'TYPE' => 'errormsg');
|
||||
}
|
||||
}
|
||||
$smarty->assign('CONTENT', 'default.tpl');
|
||||
?>
|
||||
8
public/templates/mail/notifications/locked.tpl
Normal file
8
public/templates/mail/notifications/locked.tpl
Normal file
@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>You account has been locked due to too many failed password or PIN attempts. Please follow the URL below to unlock your account.</p>
|
||||
<p>http://{$smarty.server.SERVER_NAME}{$smarty.server.PHP_SELF}?page=account&action=unlock&token={nocache}{$DATA.token}{/nocache}</p>
|
||||
<br/>
|
||||
<br/>
|
||||
</body>
|
||||
</html>
|
||||
1
public/templates/mpos/account/unlock/default.tpl
Normal file
1
public/templates/mpos/account/unlock/default.tpl
Normal file
@ -0,0 +1 @@
|
||||
|
||||
@ -197,7 +197,8 @@ CREATE TABLE IF NOT EXISTS `token_types` (
|
||||
INSERT INTO `token_types` (`id`, `name`, `expiration`) VALUES
|
||||
(1, 'password_reset', 3600),
|
||||
(2, 'confirm_email', 0),
|
||||
(3, 'invitation', 0);
|
||||
(3, 'invitation', 0),
|
||||
(4, 'account_unlock', 0);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `transactions` (
|
||||
`id` int(255) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
1
sql/010_tokentype_update.sql
Normal file
1
sql/010_tokentype_update.sql
Normal file
@ -0,0 +1 @@
|
||||
INSERT INTO `token_types` (`name`, `expiration`) VALUES ('account_unlock', 0);
|
||||
Loading…
Reference in New Issue
Block a user