diff --git a/dispatcher.php b/dispatcher.php index c2d838f..6651f89 100644 --- a/dispatcher.php +++ b/dispatcher.php @@ -25,6 +25,7 @@ $ROUTES = []; $ROUTES["^(|accueil|index|accueil\.php|accueil\.html|accueil\.py|index\.php|index\.html|index\.py)$"] = ["server_files/controllers/index.php"]; $ROUTES["^ajouter_equipe$"] = ["server_files/controllers/ajouter_equipe.php"]; +$ROUTES["^ajouter_admin$"] = ["server_files/controllers/ajouter_admin.php"]; $ROUTES["^calendrier$"] = ["server_files/controllers/calendrier.php"]; $ROUTES["^confirmer_mail/([a-z0-9]*)/?$"] = ["server_files/controllers/confirmer_mail.php", "token"]; $ROUTES["^connexion/(confirmation-mail)/?$"] = ["server_files/controllers/connexion.php", "confirmation-mail"]; diff --git a/server_files/controllers/ajouter_admin.php b/server_files/controllers/ajouter_admin.php new file mode 100644 index 0000000..c991f0f --- /dev/null +++ b/server_files/controllers/ajouter_admin.php @@ -0,0 +1,55 @@ +makeVerifications(); + $admin->register(); + } + catch (AssertionError $e) { + $has_error = true; + $error_message = $e->getMessage(); + } +} + +class NewAdmin { + public $surname; + public $first_name; + public $email; + public $password; + + public function __construct($data) + { + foreach ($data as $key => $value) + $this->$key = htmlspecialchars($value); + } + + 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."); + } + + public function register() { + global $DB, $YEAR; + + $this->password = genRandomPhrase(16, true); + + $req = $DB->prepare("INSERT INTO `users`(`email`, `pwd_hash`, `surname`, `first_name`, `role`, `year`) + VALUES (?, ?, ?, ?, ?, ?);"); + $req->execute([$this->email, password_hash($this->password, PASSWORD_BCRYPT), $this->surname, $this->first_name, "ADMIN", $YEAR]); + + Mailer::sendAddAdminMail($this); + } +} + +require_once "server_files/views/ajouter_admin.php"; \ No newline at end of file diff --git a/server_files/services/mail.php b/server_files/services/mail.php index d5df32c..5684816 100644 --- a/server_files/services/mail.php +++ b/server_files/services/mail.php @@ -75,6 +75,18 @@ class Mailer self::sendMail($user->getEmail(), "Mot de passe changé – Correspondances des Jeunes Mathématicien·ne·s", $content); } + public static function sendAddAdminMail(NewAdmin $new_admin) + { + global $YEAR; + + $content = self::getTemplate("add_admin"); + $content = preg_replace("#{FIRST_NAME}#", $new_admin->first_name, $content); + $content = preg_replace("#{SURNAME}#", $new_admin->surname, $content); + $content = preg_replace("#{PASSWORD}#", $new_admin->password, $content); + + self::sendMail($new_admin->email, "Ajout d'un administrateur – Correspondances des Jeunes Mathématicien·ne·s $YEAR", $content); + } + public static function sendAddTeamMail(User $user, Team $team) { global $YEAR; diff --git a/server_files/services/mail_templates/add_admin.html b/server_files/services/mail_templates/add_admin.html new file mode 100644 index 0000000..fb3a670 --- /dev/null +++ b/server_files/services/mail_templates/add_admin.html @@ -0,0 +1,21 @@ + + + + + Administrateur des Correspondances des Jeunes Mathématicien·ne·s + + +Bonjour {FIRST_NAME} {SURNAME},
+
+Vous recevez ce message (envoyé automatiquement) car vous êtes administrateur pour les Correspondances des Jeunes Mathématicien·ne·s. +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 !
+
+L'organisation des Correspondances des Jeunes Mathématicien·ne·s + + \ No newline at end of file diff --git a/server_files/views/ajouter_admin.php b/server_files/views/ajouter_admin.php new file mode 100644 index 0000000..d256b78 --- /dev/null +++ b/server_files/views/ajouter_admin.php @@ -0,0 +1,49 @@ +Erreur : " . $error_message . ""; + } else { + echo "

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

"; + } +} ?> + +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ +
+
+ + diff --git a/server_files/views/header.php b/server_files/views/header.php index b85ca6f..a336da9 100644 --- a/server_files/views/header.php +++ b/server_files/views/header.php @@ -42,6 +42,7 @@ +
  • Ajouter un administrateur
  • Déconnexion