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 :
+
+
12 caractères
+
1 lettre minuscule
+
1 lettre majuscule
+
1 chiffre
+
1 caractère spécial
+
+
-
+
@@ -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 :
+