mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 03:42:11 +01:00 
			
		
		
		
	Amélioration des fichiers d'ajout d'organisateur
This commit is contained in:
		@@ -3,58 +3,58 @@
 | 
				
			|||||||
if (!isset($_SESSION["role"]) || $_SESSION["role"] != Role::ADMIN)
 | 
					if (!isset($_SESSION["role"]) || $_SESSION["role"] != Role::ADMIN)
 | 
				
			||||||
    require_once "server_files/403.php";
 | 
					    require_once "server_files/403.php";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$has_error = false;
 | 
				
			||||||
 | 
					$error_message = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (isset($_POST["submitted"])) {
 | 
					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()
 | 
					class NewOrganizer {
 | 
				
			||||||
{
 | 
						public $surname;
 | 
				
			||||||
	global $DB, $YEAR, $MAIL_ADDRESS;
 | 
						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 == "")
 | 
						public function makeVerifications()
 | 
				
			||||||
		return "Le nom est invalide.";
 | 
						{
 | 
				
			||||||
 | 
							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 == "")
 | 
							$alphabet = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 | 
				
			||||||
		return "Le prénom est invalide.";
 | 
							$this->password = "";
 | 
				
			||||||
 | 
							for ($i = 0; $i < 16; ++$i)
 | 
				
			||||||
 | 
								$this->password .= $alphabet[rand(0, strlen($alphabet) - 1)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	$email = strtolower(htmlspecialchars($_POST["email"]));
 | 
							$req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `role`, `year`)
 | 
				
			||||||
	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`)
 | 
					 | 
				
			||||||
                VALUES (?, ?, ?, ?, ?, ?);");
 | 
					                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"
 | 
							sendAddOrganizerMail($this);
 | 
				
			||||||
		. "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;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once "server_files/views/ajouter_organisateur.php";
 | 
					require_once "server_files/views/ajouter_organisateur.php";
 | 
				
			||||||
							
								
								
									
										21
									
								
								server_files/services/mail_templates/add_organizer.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								server_files/services/mail_templates/add_organizer.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="fr">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					    <title>Organisateur du TFJM²</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					Bonjour {FIRST_NAME} {SURNAME},<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					Vous recevez ce message (envoyé automatiquement) car vous êtes organisateur d'un des tournois du TFJM<sup>2</sup>.
 | 
				
			||||||
 | 
					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.<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					Votre mot de passe est : <strong style="color: red; font-size: 18px;">{PASSWORD}</strong><br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					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.<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					Merci beaucoup pour votre aide !<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					Le comité national d'organisation du TFJM<sup>2</sup>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
require_once "header.php";
 | 
					require_once "header.php";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (isset($error_message)) {
 | 
					if (isset($orga)) {
 | 
				
			||||||
	if ($error_message !== false) {
 | 
						if ($has_error) {
 | 
				
			||||||
		echo "<h2>Erreur : " . $error_message . "</h2>";
 | 
							echo "<h2>Erreur : " . $error_message . "</h2>";
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		echo "<h2>Organisateur ajouté avec succès ! Ses identifiants ont été transmis par mail.</h2>";
 | 
							echo "<h2>Organisateur ajouté avec succès ! Ses identifiants ont été transmis par mail.</h2>";
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user