Connexion

Administration - ICO

Administration ICO

Accéder à la galerie Changer mon mdp Déconnexion
prepare('SELECT MIN(id) as first_id FROM admins'); $result = $stmt->execute(); $firstId = $result->fetchArray()['first_id']; if ($_SESSION['admin_id'] == $firstId): ?>
Changer le mot de passe - ICO

Changer le mot de passe

Retour
Le mot de passe doit contenir au moins :
  • 12 caractères
  • 1 lettre minuscule
  • 1 lettre majuscule
  • 1 chiffre
  • 1 caractère spécial
prepare('SELECT id, password_hash FROM admins WHERE username = :username'); $stmt->bindValue(':username', $username, SQLITE3_TEXT); $result = $stmt->execute(); if ($user = $result->fetchArray()) { if (password_verify($password, $user['password_hash'])) { $_SESSION['admin_id'] = $user['id']; header('Location: admin.php'); exit; } } showLoginForm('Identifiants incorrects'); return; } showLoginForm(); } // Gérer le changement de mot de passe function handlePasswordChange() { checkAuth(); if ($_SERVER['REQUEST_METHOD'] !== 'POST') { header('Location: admin.php'); return; } $currentPassword = $_POST['current_password'] ?? ''; $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; // 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 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; } $db = getDB(); // Vérifier l'ancien mot de passe $stmt = $db->prepare('SELECT password_hash FROM admins WHERE id = :id'); $stmt->bindValue(':id', $_SESSION['admin_id'], SQLITE3_INTEGER); $result = $stmt->execute(); $user = $result->fetchArray(); if (!password_verify($currentPassword, $user['password_hash'])) { $_SESSION['error_message'] = "Le mot de passe actuel est incorrect."; header('Location: admin.php?action=show_change_password'); return; } // Mettre à jour le mot de passe $newHash = password_hash($newPassword, PASSWORD_DEFAULT); $stmt = $db->prepare('UPDATE admins SET password_hash = :hash WHERE id = :id'); $stmt->bindValue(':hash', $newHash, SQLITE3_TEXT); $stmt->bindValue(':id', $_SESSION['admin_id'], SQLITE3_INTEGER); if ($stmt->execute()) { $_SESSION['success_message'] = "Mot de passe changé avec succès."; header('Location: admin.php'); } else { $_SESSION['error_message'] = "Une erreur est survenue lors du changement de mot de passe."; header('Location: admin.php?action=show_change_password'); } return; } // Gérer la déconnexion function handleLogout() { session_destroy(); header('Location: admin.php'); exit; } // Router principal $action = $_GET['action'] ?? 'home'; switch ($action) { case 'login': handleLogin(); break; case 'logout': handleLogout(); break; case 'show_change_password': showChangePasswordForm(); break; case 'change_password': handlePasswordChange(); break; default: showAdminInterface(); break; } ?>