diff --git a/server_files/connexion.php b/server_files/connexion.php index 82d7f18..8791be3 100644 --- a/server_files/connexion.php +++ b/server_files/connexion.php @@ -21,8 +21,12 @@ if (isset($_GET["reset_password"]) && isset($_GET["token"]) && !isset($_SESSION[ $error_message = resetPassword(); } +if (isset($_GET["confirmation-mail"]) && !isset($_SESSION["user_id"])) { + $error_message = sendConfirmEmail(); +} + function login() { - global $DB, $YEAR; + global $DB, $URL_BASE, $YEAR; $email = htmlspecialchars($_POST["email"]); @@ -31,10 +35,15 @@ function login() { $password = htmlspecialchars($_POST["password"]); - $result = $DB->query("SELECT `id`, `pwd_hash`, `email`, `surname`, `first_name`, `role`, `team_id` FROM `users` WHERE `email` = '" . $email . "';"); + $result = $DB->query("SELECT `id`, `pwd_hash`, `email`, `surname`, `first_name`, `role`, `team_id`, `confirm_email` FROM `users` WHERE `email` = '" . $email . "';"); if (($data = $result->fetch()) === FALSE) return "Le compte n'existe pas."; - + + if ($data["confirm_email"] !== 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 (!password_verify($password, $data["pwd_hash"])) return "Le mot de passe est incorrect."; @@ -97,9 +106,41 @@ function resetPassword() { $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 $DB, $URL_BASE, $MAIL_ADDRESS, $YEAR; + + $email = htmlspecialchars($_SESSION["confirm_email"]); + + if (!isset($email)) { + header("Location: $URL_BASE/connexion"); + exit(); + } + + $data = $DB->query("SELECT `confirm_email` FROM `users` WHERE `email` = '$email' AND `year` = $YEAR;")->fetch(); + + if ($data === FALSE) { + unset($_SESSION["confirm_email"]); + header("Location: $URL_BASE/connexion"); + exit(); + } + + $confirm_email_uid = $data["confirm_email"]; + + $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; +} + ?> @@ -112,6 +153,8 @@ if (isset($error_message) && $error_message === FALSE) { echo "Le mail de récupération de mot de passe a bien été envoyé."; else if (isset($_POST["reset_password"])) echo "Le mot de passe a bien été changé. Vous pouvez désormais vous connecter."; + else if (isset($_GET["confirmation-mail"])) + echo "Le mail a bien été renvoyé."; else echo "Connexion réussie !"; } @@ -140,7 +183,7 @@ else if (isset($_SESSION["user_id"])) { ?> - +
" /> @@ -169,6 +212,7 @@ else if (isset($_SESSION["user_id"])) { ?>
+
diff --git a/server_files/mon_compte.php b/server_files/mon_compte.php index d4dba41..35b5e0f 100644 --- a/server_files/mon_compte.php +++ b/server_files/mon_compte.php @@ -154,7 +154,7 @@ if (isset($error_message) && $error_message === FALSE) {

Votre compte a bien été mis à jour !