config authkey WIP

This commit is contained in:
Fred Tempez 2024-11-14 21:18:50 +01:00
parent 34475f945d
commit fb439395e7
3 changed files with 76 additions and 63 deletions

View File

@ -496,7 +496,8 @@ class config extends common
'autoDisconnect' => $this->getInput('connectAutoDisconnect', helper::FILTER_BOOLEAN), 'autoDisconnect' => $this->getInput('connectAutoDisconnect', helper::FILTER_BOOLEAN),
'captchaType' => $this->getInput('connectCaptchaType'), 'captchaType' => $this->getInput('connectCaptchaType'),
'showPassword' => $this->getInput('connectShowPassword', helper::FILTER_BOOLEAN), 'showPassword' => $this->getInput('connectShowPassword', helper::FILTER_BOOLEAN),
'redirectLogin' => $this->getInput('connectRedirectLogin', helper::FILTER_BOOLEAN) 'redirectLogin' => $this->getInput('connectRedirectLogin', helper::FILTER_BOOLEAN),
'mailAuth' => $this->getInput('connectAuthMail', helper::FILTER_BOOLEAN),
] ]
] ]
]); ]);

View File

@ -3,13 +3,7 @@
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4><?php echo helper::translate('Sécurité de la connexion'); ?> <h4><?php echo helper::translate('Sécurité de la connexion'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/connexion" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php // echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4> </h4>
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">
<?php echo template::checkbox('connectShowPassword', true, 'Dévoiler le mot de passe', [ <?php echo template::checkbox('connectShowPassword', true, 'Dévoiler le mot de passe', [
@ -31,44 +25,36 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col3"> <div class="col4">
<?php echo template::select('connectAttempt', $module::$connectAttempt, [ <?php echo template::select('connectAttempt', $module::$connectAttempt, [
'label' => 'Limitation des tentatives', 'label' => 'Limitation des tentatives',
'selected' => $this->getData(['config', 'connect', 'attempt']) 'selected' => $this->getData(['config', 'connect', 'attempt'])
]); ?> ]); ?>
</div> </div>
<div class="col3"> <div class="col4">
<?php echo template::select('connectTimeout', $module::$connectTimeout, [ <?php echo template::select('connectTimeout', $module::$connectTimeout, [
'label' => 'Blocage après échecs', 'label' => 'Blocage après échecs',
'selected' => $this->getData(['config', 'connect', 'timeout']) 'selected' => $this->getData(['config', 'connect', 'timeout'])
]); ?> ]); ?>
</div> </div>
<div class="col3 verticalAlignBottom"> <div class="col4">
<label id="helpBlacklist"><?php echo helper::translate('Liste noire'); ?> <?php echo template::select('connectAuthMail', array_merge([''=>'Aucune'], self::$groupNews), [
<?php echo template::help( 'label' => 'Validation par messagerie',
'La liste noire énumère les tentatives de connexion à partir de comptes inexistants. Sont stockés : la date, l\'heure, le nom du compte et l\'IP. 'selected' => $this->getData(['config', 'connect', 'timeout']),
Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.' 'help' => 'La connexion est confirmée par une clé adressée par messagerie depuis le groupe sélectionnée et les groupes supérieurs.'
);
?>
</label>
<?php echo template::button('ConnectBlackListDownload', [
'href' => helper::baseUrl() . 'config/blacklistDownload',
'value' => 'Télécharger la liste',
'ico' => 'download'
]); ?>
</div>
<div class="col3 verticalAlignBottom">
<?php echo template::button('CnnectBlackListReset', [
'class' => 'buttonRed',
'href' => helper::baseUrl() . 'config/blacklistReset',
'value' => 'Réinitialiser la liste',
'ico' => 'trash'
]); ?> ]); ?>
</div> </div>
</div> </div>
</div>
</div>
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Captcha à la connexion'); ?>
</h4>
<div class="row"> <div class="row">
<div class="col3"> <div class="col3">
<?php echo template::checkbox('connectCaptcha', true, 'Captcha à la connexion', [ <?php echo template::checkbox('connectCaptcha', true, 'Activer', [
'checked' => $this->getData(['config', 'connect', 'captcha']) 'checked' => $this->getData(['config', 'connect', 'captcha'])
]); ?> ]); ?>
</div> </div>
@ -92,40 +78,66 @@
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4><?php echo helper::translate('Journalisation'); ?> <h4><?php echo helper::translate('Journalisation'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/journalisation" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php // echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>
-->
</h4> </h4>
<div class="row"> <div class="row">
<div class="col3"> <div class="col6">
<?php echo template::checkbox('connectLog', true, 'Activer la journalisation', [ <div class="row">
'checked' => $this->getData(['config', 'connect', 'log']) <div class="col6">
]); ?> <?php echo template::checkbox('connectLog', true, 'Activer la journalisation', [
'checked' => $this->getData(['config', 'connect', 'log'])
]); ?>
</div>
<div class="col6">
<?php echo template::select('connectAnonymousIp', $module::$anonIP, [
'label' => 'Anonymat des adresses IP',
'selected' => $this->getData(['config', 'connect', 'anonymousIp']),
'help' => 'La règlementation française impose un anonymat de niveau 2'
]); ?>
</div>
</div>
<div class="row">
<div class="col6 ">
<?php echo template::button('ConfigLogDownload', [
'href' => helper::baseUrl() . 'config/logDownload',
'value' => 'Télécharger le journal',
'ico' => 'download'
]); ?>
</div>
<div class="col6">
<?php echo template::button('ConnectLogReset', [
'class' => 'buttonRed',
'href' => helper::baseUrl() . 'config/logReset',
'value' => 'Réinitialiser le journal',
'ico' => 'trash'
]); ?>
</div>
</div>
</div> </div>
<div class="col3"> <div class="col6 verticalAlignBottom">
<?php echo template::select('connectAnonymousIp', $module::$anonIP, [ <div class="row">
'label' => 'Anonymat des adresses IP', <div class="col6 verticalAlignBottom">
'selected' => $this->getData(['config', 'connect', 'anonymousIp']), <label id="helpBlacklist"><?php echo helper::translate('Liste noire'); ?>
'help' => 'La règlementation française impose un anonymat de niveau 2' <?php echo template::help(
]); ?> 'La liste noire énumère les tentatives de connexion à partir de comptes inexistants. Sont stockés : la date, l\'heure, le nom du compte et l\'IP.
</div> Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'
<div class="col3 verticalAlignBottom"> );
<?php echo template::button('ConfigLogDownload', [ ?>
'href' => helper::baseUrl() . 'config/logDownload', </label>
'value' => 'Télécharger le journal', <?php echo template::button('ConnectBlackListDownload', [
'ico' => 'download' 'href' => helper::baseUrl() . 'config/blacklistDownload',
]); ?> 'value' => 'Télécharger la liste',
</div> 'ico' => 'download'
<div class="col3 verticalAlignBottom"> ]); ?>
<?php echo template::button('ConnectLogReset', [ </div>
'class' => 'buttonRed', <div class="col6 verticalAlignBottom">
'href' => helper::baseUrl() . 'config/logReset', <?php echo template::button('CnnectBlackListReset', [
'value' => 'Réinitialiser le journal', 'class' => 'buttonRed',
'ico' => 'trash' 'href' => helper::baseUrl() . 'config/blacklistReset',
]); ?> 'value' => 'Réinitialiser la liste',
'ico' => 'trash'
]); ?>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -67,7 +67,7 @@ class user extends common
public static $groupProfils = [ public static $groupProfils = [
self::GROUP_MEMBER => 'Membre', self::GROUP_MEMBER => 'Membre',
self::GROUP_EDITOR => 'Éditeur' self::GROUP_EDITOR => 'Éditeur',
]; ];
public static $listModules = []; public static $listModules = [];
@ -1070,7 +1070,7 @@ class user extends common
// Clé d'authenfication utlisée pour lié le compte au cookie au lieu de stocke le hash du mot de passe // Clé d'authenfication utlisée pour lié le compte au cookie au lieu de stocke le hash du mot de passe
$authKey = uniqid('', true) . bin2hex(random_bytes(8)); $authKey = uniqid('', true) . bin2hex(random_bytes(8));
if ($this->getData(['config', 'connect', 'mailAuth']) === true) { if ($this->getData(['config', 'connect', 'mailAuth']) >= $this->getData(['user', $userId, 'group'])) {
$logStatus = 'Envoi du mail d\'authentification'; $logStatus = 'Envoi du mail d\'authentification';
// Redirection vers la page d'authentification // Redirection vers la page d'authentification
$authRedirect = 'user/auth/'; $authRedirect = 'user/auth/';