1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2024-12-25 07:02:22 +00:00

L'adresse mail doit être confirmée pour pouvoir se connecter

This commit is contained in:
Yohann 2019-09-02 17:29:27 +02:00
parent 0b1c3cb86e
commit e9579e7e94
2 changed files with 49 additions and 5 deletions

View File

@ -21,8 +21,12 @@ if (isset($_GET["reset_password"]) && isset($_GET["token"]) && !isset($_SESSION[
$error_message = resetPassword(); $error_message = resetPassword();
} }
if (isset($_GET["confirmation-mail"]) && !isset($_SESSION["user_id"])) {
$error_message = sendConfirmEmail();
}
function login() { function login() {
global $DB, $YEAR; global $DB, $URL_BASE, $YEAR;
$email = htmlspecialchars($_POST["email"]); $email = htmlspecialchars($_POST["email"]);
@ -31,10 +35,15 @@ function login() {
$password = htmlspecialchars($_POST["password"]); $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) if (($data = $result->fetch()) === FALSE)
return "Le compte n'existe pas."; 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). <a href=\"$URL_BASE/connexion/confirmation-mail\">Cliquez ici pour renvoyer le mail de confirmation</a>.";
}
if (!password_verify($password, $data["pwd_hash"])) if (!password_verify($password, $data["pwd_hash"]))
return "Le mot de passe est incorrect."; 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]); $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; 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;
}
?> ?>
<?php include "header.php" ?> <?php include "header.php" ?>
@ -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é."; echo "Le mail de récupération de mot de passe a bien été envoyé.";
else if (isset($_POST["reset_password"])) else if (isset($_POST["reset_password"]))
echo "Le mot de passe a bien été changé. Vous pouvez désormais vous connecter."; 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 else
echo "Connexion réussie !"; echo "Connexion réussie !";
} }
@ -140,7 +183,7 @@ else if (isset($_SESSION["user_id"])) { ?>
</tbody> </tbody>
</table> </table>
</form> </form>
<?php } else if (isset($_GET["reset_password"])) { ?> <?php } elseif (isset($_GET["reset_password"])) { ?>
<form method="POST"> <form method="POST">
<input type="hidden" name="token" value="<?= $_GET["token"] ?>" /> <input type="hidden" name="token" value="<?= $_GET["token"] ?>" />
<table style="width: 100%;"> <table style="width: 100%;">
@ -169,6 +212,7 @@ else if (isset($_SESSION["user_id"])) { ?>
</tbody> </tbody>
</table> </table>
</form> </form>
<?php } elseif (isset($_GET["confirmation-mail"])) { ?>
<?php } else { ?> <?php } else { ?>
<form method="POST"> <form method="POST">
<input type="hidden" name="submitted" value="true" /> <input type="hidden" name="submitted" value="true" />

View File

@ -154,7 +154,7 @@ if (isset($error_message) && $error_message === FALSE) {
<h2>Votre compte a bien été mis à jour !</h2> <h2>Votre compte a bien été mis à jour !</h2>
<?php <?php
if (isset($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) { if (isset($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Votre adresse mail a bien été changée. Veuillez vérifier votre boîte mail pour valider votre nouvelle adresse"; echo "Votre adresse mail a bien été changée. Veuillez vérifier votre boîte mail pour valider votre nouvelle adresse, vous en aurez besoin pour vous reconnecter.";
} }
?> ?>
<?php } ?> <?php } ?>