diff --git a/admin.php b/admin.php index f2583c6..6731f84 100644 --- a/admin.php +++ b/admin.php @@ -197,11 +197,21 @@ function showChangePasswordForm() {
- + + + Le mot de passe doit contenir au moins : + +
- +
@@ -253,16 +263,34 @@ function handlePasswordChange() { $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; - // Vérifier que les nouveaux mots de passe correspondent - if ($newPassword !== $confirmPassword) { - $_SESSION['error_message'] = "Les nouveaux mots de passe ne correspondent pas."; + // Vérifier que le nouveau mot de passe respecte les critères + if (strlen($newPassword) < 12) { + $_SESSION['error_message'] = "Le mot de passe doit faire au moins 12 caractères."; header('Location: admin.php?action=show_change_password'); return; } - // Vérifier que le nouveau mot de passe est assez long - if (strlen($newPassword) < 8) { - $_SESSION['error_message'] = "Le nouveau mot de passe doit faire au moins 8 caractères."; + // Vérifier les critères avec des expressions régulières + if (!preg_match('/[a-z]/', $newPassword)) { + $_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'); return; } diff --git a/styles-admin.css b/styles-admin.css index fb111ca..2c23e20 100644 --- a/styles-admin.css +++ b/styles-admin.css @@ -368,7 +368,7 @@ body { padding: 0.8rem; border: none; border-radius: 0.5rem; - background-color: #2a2a2a; + background-color: #6c757d; color: white; font-size: 1rem; } @@ -785,6 +785,10 @@ body { border: 1px solid #3a3a3a; } +.modal-content { + text-align: left; +} + .spinner { border: 4px solid #3a3a3a; border-top: 4px solid #ffffff; diff --git a/utilisateurs.php b/utilisateurs.php index 5384a64..67457f4 100644 --- a/utilisateurs.php +++ b/utilisateurs.php @@ -39,6 +39,32 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { 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à $stmt = $db->prepare('SELECT COUNT(*) as count FROM admins WHERE username = :username'); $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."; } break; - + case 'edit': $userId = $_POST['user_id'] ?? ''; $username = $_POST['username'] ?? ''; @@ -71,45 +97,35 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { break; } - // Vérifier que l'utilisateur existe et n'est pas le premier compte - $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 + // Si un nouveau mot de passe est fourni if (!empty($password)) { - $stmt = $db->prepare('UPDATE admins SET username = :username, password_hash = :password_hash WHERE id = :id'); - $stmt->bindValue(':password_hash', password_hash($password, PASSWORD_DEFAULT), SQLITE3_TEXT); - } else { - $stmt = $db->prepare('UPDATE admins SET username = :username WHERE id = :id'); + // 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; + } } - $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': $userId = $_POST['user_id'] ?? ''; @@ -247,7 +263,17 @@ $config = getSiteConfig();
- + + + Le mot de passe doit contenir au moins : + +