diff --git a/server_files/controllers/ajouter_organisateur.php b/server_files/controllers/ajouter_organisateur.php index ebf5cce..35c8f9c 100644 --- a/server_files/controllers/ajouter_organisateur.php +++ b/server_files/controllers/ajouter_organisateur.php @@ -3,58 +3,58 @@ if (!isset($_SESSION["role"]) || $_SESSION["role"] != Role::ADMIN) require_once "server_files/403.php"; +$has_error = false; +$error_message = null; + if (isset($_POST["submitted"])) { - $error_message = addOrganizer(); + $orga = new NewOrganizer($_POST); + try { + $orga->makeVerifications(); + $orga->register(); + } + catch (AssertionError $e) { + $has_error = true; + $error_message = $e->getMessage(); + } } -function addOrganizer() -{ - global $DB, $YEAR, $MAIL_ADDRESS; +class NewOrganizer { + public $surname; + public $first_name; + public $email; + public $admin; + public $password; - $surname = htmlspecialchars($_POST["surname"]); + public function __construct($data) + { + foreach ($data as $key => $value) + $this->$key = htmlspecialchars($value); + } - if (!isset($surname) || $surname == "") - return "Le nom est invalide."; + public function makeVerifications() + { + ensure($this->surname != null && $this->surname != "", "Le nom est invalide."); + ensure($this->first_name != null && $this->first_name != "", "Le prénom est invalide."); + ensure(filter_var($this->email, FILTER_VALIDATE_EMAIL), "L'adresse e-mail est invalide."); + $this->email = strtolower($this->email); + ensure(!userExists($this->email), "Cette adresse e-mail est déjà utilisée."); + $this->admin = $this->admin == "on" ? true : false; + } - $first_name = htmlspecialchars($_POST["first_name"]); + public function register() { + global $DB, $YEAR; - if (!isset($first_name) || $first_name == "") - return "Le prénom est invalide."; + $alphabet = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + $this->password = ""; + for ($i = 0; $i < 16; ++$i) + $this->password .= $alphabet[rand(0, strlen($alphabet) - 1)]; - $email = strtolower(htmlspecialchars($_POST["email"])); - if (!isset($email) || $email == "" || !filter_var($email, FILTER_VALIDATE_EMAIL)) - return "L'adresse e-mail est invalide."; - - $admin = isset($_POST["admin"]) && $_POST["admin"] == "on"; - - $req = $DB->prepare("SELECT `id` FROM `users` WHERE `email` = ? AND `year` = '$YEAR';"); - $req->execute([$email]); - if ($req->fetch() !== FALSE) - return "Cette adresse e-mail est déjà utilisée."; - - $alphabet = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - $password = ""; - for ($i = 0; $i < 16; ++$i) - $password .= $alphabet[rand(0, strlen($alphabet) - 1)]; - $hash = password_hash($password, PASSWORD_BCRYPT); - - $req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `role`, `year`) + $req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `role`, `year`) VALUES (?, ?, ?, ?, ?, ?);"); - $req->execute([$email, $hash, $surname, $first_name, $admin ? "ADMIN" : "ORGANIZER", $YEAR]); + $req->execute([$this->email, password_hash($this->password, PASSWORD_BCRYPT), $this->surname, $this->first_name, $this->admin ? "ADMIN" : "ORGANIZER", $YEAR]); - $msg = "Bonjour " . $first_name . " " . $surname . ",\r\n\r\n" - . "Vous recevez ce message (envoyé automatiquement) car vous êtes organisateur d'un des tournois du TFJM². " - . "Veuillez trouver ci-dessous vos informations d'utilisateur pour le site officiel des inscriptions. " - . "Elles vous permettront de gérer les inscriptions des équipes de votre tournoi.\r\n\r\n" - . "Votre mot de passe est : $password\r\n\r\n" - . "Notez bien que ce mot de passe est temporaire, et pour des raisons de sécurité vous devrez le changer " - . "lors de votre prochaine connexion sur le site.\r\n\r\n" - . "Merci beaucoup pour votre aide !\r\n\r\n" - . "Les organisateurs du TFJM²"; - - mail($email, "Organisateur du TFJM²", $msg, "From: $MAIL_ADDRESS\r\n"); - - return false; + sendAddOrganizerMail($this); + } } require_once "server_files/views/ajouter_organisateur.php"; \ No newline at end of file diff --git a/server_files/services/mail_templates/add_organizer.html b/server_files/services/mail_templates/add_organizer.html new file mode 100644 index 0000000..d0331e1 --- /dev/null +++ b/server_files/services/mail_templates/add_organizer.html @@ -0,0 +1,21 @@ + + + + + Organisateur du TFJM² + + +Bonjour {FIRST_NAME} {SURNAME},
+
+Vous recevez ce message (envoyé automatiquement) car vous êtes organisateur d'un des tournois du TFJM2. +Veuillez trouver ci-dessous vos informations d'utilisateur pour le site officiel des inscriptions. Elles vous permettront de gérer les inscriptions des équipes de votre tournoi.
+
+Votre mot de passe est : {PASSWORD}
+
+Notez bien que ce mot de passe est temporaire, et pour des raisons de sécurité vous devrez le changer lors de votre prochaine connexion sur le site.
+
+Merci beaucoup pour votre aide !
+
+Le comité national d'organisation du TFJM2 + + \ No newline at end of file diff --git a/server_files/views/ajouter_organisateur.php b/server_files/views/ajouter_organisateur.php index ea647eb..9709b93 100644 --- a/server_files/views/ajouter_organisateur.php +++ b/server_files/views/ajouter_organisateur.php @@ -1,8 +1,8 @@ Erreur : " . $error_message . ""; } else { echo "

Organisateur ajouté avec succès ! Ses identifiants ont été transmis par mail.

";