query("SELECT `id`, `email` FROM `users` WHERE `forgotten_password` = '" . htmlspecialchars($_GET["token"]) . "';")->fetch(); if ($reset_data === FALSE) { header("Location: $URL_BASE/connexion"); exit(); } if (isset($_POST["reset_password"])) $error_message = resetPassword(); } if (isset($_GET["confirmation-mail"]) && !isset($_SESSION["user_id"])) { $error_message = sendConfirmEmail(); } function login() { global $URL_BASE; $email = htmlspecialchars($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) return "L'email entrée est invalide."; $password = htmlspecialchars($_POST["password"]); $user = User::fromEmail($email); if ($user === FALSE) return "Le compte n'existe pas."; if ($user->getConfirmEmailToken() !== NULL) { $_SESSION["confirm_email"] = $email; return "L'adresse mail n'a pas été validée. Veuillez vérifier votre boîte mail (surtout vos spams). Cliquez ici pour renvoyer le mail de confirmation."; } if (!$user->checkPassword($password)) return "Le mot de passe est incorrect."; $_SESSION["user_id"] = $user->getId(); loadUserValues(); return false; } function recuperateAccount() { global $MAIL_ADDRESS, $URL_BASE; $email = htmlspecialchars($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) return "L'email entrée est invalide."; $user = User::fromEmail($email); if ($user == null) return "Le compte n'existe pas."; $token = uniqid(); $user->setForgottenPasswordToken($token); $msg = "Bonjour,\r\n\r\n" . "Vous avez indiqué avoir oublié votre mot de passe. Veuillez cliquer ici pour le réinitialiser : $URL_BASE/connexion/reinitialiser_mdp/$token\r\n\r\n" . "Si vous n'êtes pas à l'origine de cette manipulation, vous pouvez ignorer ce message.\r\n\r\n" . "Cordialement,\r\n\r\n" . "Le comité national d'organisation du TFJM²."; mail("$email", "Mot de passe oublié - TFJM²", $msg, "From: $MAIL_ADDRESS\r\n"); return false; } function resetPassword() { global $DB, $MAIL_ADDRESS, $reset_data; $id = $reset_data["id"]; $email = $reset_data["email"]; $password = htmlspecialchars($_POST["password"]); $confirm = htmlspecialchars($_POST["confirm_password"]); if (strlen($password) < 8) return "Le mot de passe doit comporter au moins 8 caractères."; if ($password != $confirm) return "Les deux mots de passe sont différents."; $hash = password_hash($password, PASSWORD_BCRYPT); $DB->prepare("UPDATE `users` SET `pwd_hash` = ?, `forgotten_password` = NULL WHERE `id` = ?;")->execute([$hash, $id]); $msg = "Bonjour,\r\n\r\nNous vous informons que votre mot de passe vient d'être modifié. " . "Si vous n'êtes pas à l'origine de cette manipulation, veuillez immédiatement vérifier vos accès à votre boîte mail et changer votre mot de passe sur la plateforme d'inscription.\r\n\r\n" . "Cordialement,\r\n\r\nLe comité national d'organisation du TFJM²"; mail($email, "Mot de passe modifié TFJM²", $msg, "From: $MAIL_ADDRESS\r\n"); return false; } function sendConfirmEmail() { global $URL_BASE, $MAIL_ADDRESS, $YEAR; $email = htmlspecialchars($_SESSION["confirm_email"]); if (!isset($email)) { header("Location: $URL_BASE/connexion"); exit(); } $user = User::fromEmail($email); if ($user === null) { unset($_SESSION["confirm_email"]); header("Location: $URL_BASE/connexion"); exit(); } $confirm_email_uid = $user->getConfirmEmailToken(); $msg = "Bonjour,\r\n\r\nPour confirmer votre adresse mail, cliquez ici : $URL_BASE/confirmer_mail/$confirm_email_uid\r\n\r\n" . "Cordialement,\r\n\r\nLe comité national d'organisation du TFJM²"; mail($email, "Confirmation d'adresse mail TFJM² $YEAR", $msg, "From: $MAIL_ADDRESS\r\n"); return false; } require_once "server_files/views/connexion.php";