forked from ZwiiCMS-Team/ZwiiCMS
10.2.dev11 bloquer l'accès au compte trop de mauvaises connexions
This commit is contained in:
parent
943a4dddf8
commit
397fbe8c26
@ -36,10 +36,14 @@ class common {
|
||||
const THUMBS_WIDTH = 640;
|
||||
|
||||
// Contrôle d'édition temps max en secondes.
|
||||
const ACCESS_TIMER = 360;
|
||||
const ACCESS_TIMER = 1800;
|
||||
// Nombre d'essais
|
||||
const CONNECT_ATTEMPT = 3;
|
||||
// Temps mort
|
||||
const CONNECT_TIMEOUT = 1800;
|
||||
|
||||
// Numéro de version
|
||||
const ZWII_VERSION = '10.2.00.dev10';
|
||||
const ZWII_VERSION = '10.2.00.dev11';
|
||||
const ZWII_UPDATE_CHANNEL = "v10";
|
||||
|
||||
public static $actions = [];
|
||||
|
@ -332,6 +332,13 @@ class user extends common {
|
||||
// Soumission du formulaire
|
||||
if($this->isPost()) {
|
||||
$userId = $this->getInput('userLoginId', helper::FILTER_ID, true);
|
||||
// Contrôle du time out
|
||||
if ( $this->getData(['user',$userId,'connectTimeout']) + self::CONNECT_TIMEOUT > time() &&
|
||||
$this->getData(['user',$userId,'connectFail']) > self::CONNECT_ATTEMPT ) {
|
||||
$this->addOutput([
|
||||
'notification' => 'Accès bloqué pour ' . self::CONNECT_TIMEOUT . ' minutes'
|
||||
]);
|
||||
}
|
||||
// Connexion si les informations sont correctes
|
||||
if(
|
||||
password_verify($this->getInput('userLoginPassword', helper::FILTER_STRING_SHORT, true), $this->getData(['user', $userId, 'password']))
|
||||
@ -348,13 +355,15 @@ class user extends common {
|
||||
AND $this->getData(['user', $userId, 'group']) < self::GROUP_ADMIN
|
||||
) {
|
||||
$this->addOutput([
|
||||
'notification' => 'Seul un administrateur peur se connecter lors d\'une maintenance',
|
||||
'notification' => 'Seul un administrateur peut se connecter lors d\'une maintenance',
|
||||
'redirect' => helper::baseUrl(),
|
||||
'state' => false
|
||||
]);
|
||||
}
|
||||
// Valeurs en sortie en cas de réussite
|
||||
else {
|
||||
// RAZ compteur échec connexion
|
||||
$this->setData(['user',$userId,'connectFail',0 ]);
|
||||
// Valeurs en sortie en cas de réussite
|
||||
$this->addOutput([
|
||||
'notification' => 'Connexion réussie',
|
||||
'redirect' => helper::baseUrl() . str_replace('_', '/', str_replace('__', '#', $this->getUrl(2))),
|
||||
@ -364,9 +373,23 @@ class user extends common {
|
||||
}
|
||||
// Sinon notification d'échec
|
||||
else {
|
||||
// Incrémenter le compteur d'échec de connexion si l'utilisateur existe
|
||||
if ( is_array($this->getdata(['user',$userId])) ) {
|
||||
$this->setData(['user',$userId,'connectFail',$this->getdata(['user',$userId,'connectFail']) + 1 ]);
|
||||
}
|
||||
// Mettre à jour le timer
|
||||
if ( $this->getdata(['user',$userId,'connectFail']) > self::CONNECT_ATTEMPT) {
|
||||
$notification = 'Trop de tentatives, accès bloqué durant ' . self::CONNECT_TIMEOUT / 360 . ' minutes après chaque tentative infructueuse';
|
||||
// Ne pas incrémenter le timer si actif
|
||||
if ($this->getData(['user',$userId,'connectTimeout']) + self::CONNECT_TIMEOUT < time() ) {
|
||||
$this->setData(['user',$userId,'connectTimeout', time()]);
|
||||
}
|
||||
} else {
|
||||
$notification = 'Identifiant ou mot de passe incorrect';
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'notification' => 'Identifiant ou mot de passe incorrect'
|
||||
'notification' => $notification
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user