Temps de validité à implémenter dans la configuration

This commit is contained in:
Fred Tempez 2024-11-16 08:38:39 +01:00
parent fb439395e7
commit 2ba03c2453
3 changed files with 38 additions and 25 deletions

View File

@ -1176,7 +1176,14 @@ class user extends common
// Vérifier la clé saisie
$targetKey = $this->getData(['user', $this->getUser('id'), 'authKey']);
$inputKey = $this->getInput('userAuthKey', helper::FILTER_INT);
if ($targetKey === $inputKey) {
// Supprime la clé stockée et ltemps limite
$this->deleteData(['user', $this->getUser('id'), 'authKey']);
// Réinitialiser le compteur de temps
$this->setData(['user', $this->getUser('id'), 'connectTimeout', 0]);
if (
$targetKey === $inputKey &&
$this->getData(['user', $this->getUser('id'), 'connectTimeout']) + 3600 >= time()
) {
$pageId = $this->getUrl(2);
// La fiche de l'utilisateur contient la clé d'authentification
$this->setData(['user', $this->getUser('id'), 'authKey', $this->getInput('ZWII_AUTH_KEY')]);
@ -1212,23 +1219,32 @@ class user extends common
* Envoi d'un email contenant une clé
* Stockage de la clé dans le compte de l'utilisateur
*/
$sent = $this->sendMail(
$this->getUser('mail'),
'Tentative de connexion à votre',
//'Bonjour <strong>' . $item['prenom'] . ' ' . $item['nom'] . '</strong>,<br><br>' .
'<p>Clé de validation à saisir dans le formulaire :</p>' .
'<h1><center>'.$this->getData(['user', $this->getUser('id'), 'authKey']).'</center></h1>',
null,
$this->getData(['config', 'smtp', 'from'])
);
// La clé est envoyée une seule fois
$sent = false;
if (
$this->getData(['user', $this->getUser('id'), 'authKey'])
&& $this->getData(['user', $this->getUser('id'), 'connectTimeout']) === 0
) {
$sent = $this->sendMail(
$this->getUser('mail'),
'Tentative de connexion à votre',
//'Bonjour <strong>' . $item['prenom'] . ' ' . $item['nom'] . '</strong>,<br><br>' .
'<p>Clé de validation à saisir dans le formulaire :</p>' .
'<h1><center>' . $this->getData(['user', $this->getUser('id'), 'authKey']) . '</center></h1>',
null,
$this->getData(['config', 'smtp', 'from'])
);
// Stocker l'envoi de l'email
$this->setData(['user', $this->getUser('id'), 'connectTimeout', time()]);
}
// Message envoyé sinon la connexion est réalisée pour ne pas bloquer.
if ($sent === true) {
// Valider l'authentification en stockant la clé
// Rediriger vers la page ou l'accueil
if ($sent === false) {
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Authentification'),
'title' => helper::translate('Double authentification'),
'view' => 'auth',
'display' => self::DISPLAY_LAYOUT_LIGHT,
]);

View File

@ -18,14 +18,6 @@
* admin.css
*/
#passwordLabel, #passwordIcon {
display: inline-flex;
}
#passwordIcon {
float: right;
}
@media screen and (max-width: 768px) {
#buttonsContainer {
display: grid;
@ -36,4 +28,9 @@
#backContainer{
order: 2;
}
}
#userAuthKey {
text-align: center;
font-size: 1.3rem;
}

View File

@ -1,8 +1,8 @@
<?php echo template::formOpen('userAuthForm'); ?>
<div class="row">
<div class="col4 offset4">
<div class="col6 offset3">
<?php echo template::text('userAuthKey', [
'label' => helper::translate('Clé')
'label' => helper::translate('Clé reçue par couriel')
]); ?>
</div>
</div>
@ -15,7 +15,7 @@
</div>
<div class="col3 offset7" id="loginContainer">
<?php echo template::submit('userLoginSubmit', [
'value' => helper::translate('Connexion'),
'value' => helper::translate('Authentification'),
'ico' => ''
]); ?>
</div>