renforcement des exigences des mdp des admins
This commit is contained in:
parent
09a2a804ee
commit
b29c70b87c
44
admin.php
44
admin.php
@ -197,11 +197,21 @@ function showChangePasswordForm() {
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="new_password">Nouveau mot de passe :</label>
|
<label for="new_password">Nouveau mot de passe :</label>
|
||||||
<input type="password" id="new_password" name="new_password" required minlength="8">
|
<input type="password" id="new_password" name="new_password" required minlength="12">
|
||||||
|
<small class="form-help">
|
||||||
|
Le mot de passe doit contenir au moins :
|
||||||
|
<ul>
|
||||||
|
<li>12 caractères</li>
|
||||||
|
<li>1 lettre minuscule</li>
|
||||||
|
<li>1 lettre majuscule</li>
|
||||||
|
<li>1 chiffre</li>
|
||||||
|
<li>1 caractère spécial</li>
|
||||||
|
</ul>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="confirm_password">Confirmer le mot de passe :</label>
|
<label for="confirm_password">Confirmer le mot de passe :</label>
|
||||||
<input type="password" id="confirm_password" name="confirm_password" required minlength="8">
|
<input type="password" id="confirm_password" name="confirm_password" required minlength="12">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<button type="submit" class="action-button">Changer le mot de passe</button>
|
<button type="submit" class="action-button">Changer le mot de passe</button>
|
||||||
@ -253,16 +263,34 @@ function handlePasswordChange() {
|
|||||||
$newPassword = $_POST['new_password'] ?? '';
|
$newPassword = $_POST['new_password'] ?? '';
|
||||||
$confirmPassword = $_POST['confirm_password'] ?? '';
|
$confirmPassword = $_POST['confirm_password'] ?? '';
|
||||||
|
|
||||||
// Vérifier que les nouveaux mots de passe correspondent
|
// Vérifier que le nouveau mot de passe respecte les critères
|
||||||
if ($newPassword !== $confirmPassword) {
|
if (strlen($newPassword) < 12) {
|
||||||
$_SESSION['error_message'] = "Les nouveaux mots de passe ne correspondent pas.";
|
$_SESSION['error_message'] = "Le mot de passe doit faire au moins 12 caractères.";
|
||||||
header('Location: admin.php?action=show_change_password');
|
header('Location: admin.php?action=show_change_password');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier que le nouveau mot de passe est assez long
|
// Vérifier les critères avec des expressions régulières
|
||||||
if (strlen($newPassword) < 8) {
|
if (!preg_match('/[a-z]/', $newPassword)) {
|
||||||
$_SESSION['error_message'] = "Le nouveau mot de passe doit faire au moins 8 caractères.";
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre minuscule.";
|
||||||
|
header('Location: admin.php?action=show_change_password');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[A-Z]/', $newPassword)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre majuscule.";
|
||||||
|
header('Location: admin.php?action=show_change_password');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[0-9]/', $newPassword)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un chiffre.";
|
||||||
|
header('Location: admin.php?action=show_change_password');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[^A-Za-z0-9]/', $newPassword)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un caractère spécial.";
|
||||||
header('Location: admin.php?action=show_change_password');
|
header('Location: admin.php?action=show_change_password');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -368,7 +368,7 @@ body {
|
|||||||
padding: 0.8rem;
|
padding: 0.8rem;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
background-color: #2a2a2a;
|
background-color: #6c757d;
|
||||||
color: white;
|
color: white;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
@ -785,6 +785,10 @@ body {
|
|||||||
border: 1px solid #3a3a3a;
|
border: 1px solid #3a3a3a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
.spinner {
|
.spinner {
|
||||||
border: 4px solid #3a3a3a;
|
border: 4px solid #3a3a3a;
|
||||||
border-top: 4px solid #ffffff;
|
border-top: 4px solid #ffffff;
|
||||||
|
114
utilisateurs.php
114
utilisateurs.php
@ -39,6 +39,32 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérification du mot de passe
|
||||||
|
if (strlen($password) < 12) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit faire au moins 12 caractères.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[a-z]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre minuscule.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[A-Z]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre majuscule.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[0-9]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un chiffre.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[^A-Za-z0-9]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un caractère spécial.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Vérifier si l'utilisateur existe déjà
|
// Vérifier si l'utilisateur existe déjà
|
||||||
$stmt = $db->prepare('SELECT COUNT(*) as count FROM admins WHERE username = :username');
|
$stmt = $db->prepare('SELECT COUNT(*) as count FROM admins WHERE username = :username');
|
||||||
$stmt->bindValue(':username', $username, SQLITE3_TEXT);
|
$stmt->bindValue(':username', $username, SQLITE3_TEXT);
|
||||||
@ -60,7 +86,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$_SESSION['error_message'] = "Erreur lors de l'ajout de l'utilisateur.";
|
$_SESSION['error_message'] = "Erreur lors de l'ajout de l'utilisateur.";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'edit':
|
case 'edit':
|
||||||
$userId = $_POST['user_id'] ?? '';
|
$userId = $_POST['user_id'] ?? '';
|
||||||
$username = $_POST['username'] ?? '';
|
$username = $_POST['username'] ?? '';
|
||||||
@ -71,45 +97,35 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier que l'utilisateur existe et n'est pas le premier compte
|
// Si un nouveau mot de passe est fourni
|
||||||
$stmt = $db->prepare('SELECT id FROM admins WHERE id = :id');
|
|
||||||
$stmt->bindValue(':id', $userId, SQLITE3_INTEGER);
|
|
||||||
$user = $stmt->execute()->fetchArray();
|
|
||||||
|
|
||||||
if (!$user) {
|
|
||||||
$_SESSION['error_message'] = "Utilisateur introuvable.";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vérifier si le nouveau nom d'utilisateur existe déjà pour un autre utilisateur
|
|
||||||
$stmt = $db->prepare('SELECT id FROM admins WHERE username = :username AND id != :id');
|
|
||||||
$stmt->bindValue(':username', $username, SQLITE3_TEXT);
|
|
||||||
$stmt->bindValue(':id', $userId, SQLITE3_INTEGER);
|
|
||||||
$exists = $stmt->execute()->fetchArray();
|
|
||||||
|
|
||||||
if ($exists) {
|
|
||||||
$_SESSION['error_message'] = "Cet identifiant est déjà utilisé.";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mettre à jour l'utilisateur
|
|
||||||
if (!empty($password)) {
|
if (!empty($password)) {
|
||||||
$stmt = $db->prepare('UPDATE admins SET username = :username, password_hash = :password_hash WHERE id = :id');
|
// Vérification du mot de passe
|
||||||
$stmt->bindValue(':password_hash', password_hash($password, PASSWORD_DEFAULT), SQLITE3_TEXT);
|
if (strlen($password) < 12) {
|
||||||
} else {
|
$_SESSION['error_message'] = "Le mot de passe doit faire au moins 12 caractères.";
|
||||||
$stmt = $db->prepare('UPDATE admins SET username = :username WHERE id = :id');
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[a-z]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre minuscule.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[A-Z]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins une lettre majuscule.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[0-9]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un chiffre.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/[^A-Za-z0-9]/', $password)) {
|
||||||
|
$_SESSION['error_message'] = "Le mot de passe doit contenir au moins un caractère spécial.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt->bindValue(':username', $username, SQLITE3_TEXT);
|
|
||||||
$stmt->bindValue(':id', $userId, SQLITE3_INTEGER);
|
|
||||||
|
|
||||||
if ($stmt->execute()) {
|
|
||||||
$_SESSION['success_message'] = "Utilisateur modifié avec succès.";
|
|
||||||
} else {
|
|
||||||
$_SESSION['error_message'] = "Erreur lors de la modification de l'utilisateur.";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
$userId = $_POST['user_id'] ?? '';
|
$userId = $_POST['user_id'] ?? '';
|
||||||
|
|
||||||
@ -247,7 +263,17 @@ $config = getSiteConfig();
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password">Mot de passe :</label>
|
<label for="password">Mot de passe :</label>
|
||||||
<input type="password" id="password" name="password" required minlength="8">
|
<input type="password" id="password" name="password" required minlength="12">
|
||||||
|
<small class="form-help">
|
||||||
|
Le mot de passe doit contenir au moins :
|
||||||
|
<ul>
|
||||||
|
<li>12 caractères</li>
|
||||||
|
<li>1 lettre minuscule</li>
|
||||||
|
<li>1 lettre majuscule</li>
|
||||||
|
<li>1 chiffre</li>
|
||||||
|
<li>1 caractère spécial</li>
|
||||||
|
</ul>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<button type="button" onclick="closeModal('addUserModal')"
|
<button type="button" onclick="closeModal('addUserModal')"
|
||||||
@ -271,7 +297,17 @@ $config = getSiteConfig();
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="edit_password">Nouveau mot de passe (laisser vide pour ne pas changer) :</label>
|
<label for="edit_password">Nouveau mot de passe (laisser vide pour ne pas changer) :</label>
|
||||||
<input type="password" id="edit_password" name="password" minlength="8">
|
<input type="password" id="edit_password" name="password" minlength="12">
|
||||||
|
<small class="form-help">
|
||||||
|
Le mot de passe doit contenir au moins :
|
||||||
|
<ul>
|
||||||
|
<li>12 caractères</li>
|
||||||
|
<li>1 lettre minuscule</li>
|
||||||
|
<li>1 lettre majuscule</li>
|
||||||
|
<li>1 chiffre</li>
|
||||||
|
<li>1 caractère spécial</li>
|
||||||
|
</ul>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<button type="button" onclick="closeModal('editUserModal')"
|
<button type="button" onclick="closeModal('editUserModal')"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user