/** * Cette fonction change le mot de passe d'un utilisateur à partir de son email. Un mot de passe aléatoire et généré, et lui est envoyé * @param string $_POST['mail'] : L'email de l'utilisateur cible * @return void; */ public function changePassword() { //Creation de l'object de base de données global $db; $email = $_POST['mail']; if (!($users = $db->getFromTableWhere('users', ['email' => $email]))) { $_SESSION['errormessage'] = 'Cet e-mail n\'existe pas.'; header('Location: ' . $this->generateUrl('connect', 'forgetPassword')); return false; } $password = internalTools::generatePassword(rand(8, 12)); $message = "Vous avez demandé un nouveau mot de passe pour le site " . HTTP_PWD . ".\n"; $message = "Votre nouveau mot de passe a été généré aléatoirement, et n'est connu que de vous. Le voici : \n"; $message .= "Nouveau mot de passe : " . $password . "\n\n"; $message .= "-------------------------------------\n"; $message .= "Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site http://raspbian-france.fr\n"; if (!mail($email, 'RaspiSMS - Recuperation de mot de passe', $message)) { $_SESSION['errormessage'] = 'Impossible d\'envoyer les nouveaux identifiants.'; header('Location: ' . $this->generateUrl('connect', 'forgetPassword')); return false; } $new_password = sha1($password); if (!$db->updateTableWhere('users', ['email' => $user['email'], 'password' => $new_password, 'admin' => $user['admin']], ['id' => $user['id']])) { $_SESSION['errormessage'] = 'Impossible de mettre à jour le mot de passe.'; header('Location: ' . $this->generateUrl('connect')); return false; } $_SESSION['successmessage'] = 'Un nouveau mot de passe vous a été envoyé par mail.'; header('Location: ' . $this->generateUrl('connect')); return true; }
/** * Cette fonction insert un nouvel utilisateur * @param $csrf : Le jeton CSRF * @param string $_POST['email'] : L'email de l'utilisateur * @param string $_POST['email_confirm'] : Confirmation de l'email de l'utilisateur * @param string $_POST['password'] : Le mot de passe de l'utilisateur (si vide, générer automatiquement) * @param string $_POST['password_confirm'] : Confirmation du mot de passe de l'utilisateur * @param boolean $_POST['admin'] : Optionnel : Si l'utilisateur est admin. Par défaut non */ public function create($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } global $db; if (!isset($_POST['email']) || !isset($_POST['email_confirm']) || $_POST['email'] != $_POST['email_confirm']) { $_SESSION['errormessage'] = 'Les e-mails fournis ne correspondent pas.'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } $email = $_POST['email']; $no_crypt_password = internalTools::generatePassword(rand(8, 12)); if ($_POST['password']) { if ($_POST['password'] != $_POST['password_confirm']) { $_SESSION['errormessage'] = 'Les mots de passes fournis ne correspondent pas.'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } $no_crypt_password = $_POST['password']; } $password = sha1($no_crypt_password); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $_SESSION['errormessage'] = 'L\'e-mail fourni présente un format incorrect.'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } $admin = false; if (isset($_SESSION['admin']) && $_SESSION['admin']) { if (isset($_POST['admin']) && $_POST['admin']) { $admin = true; } } $message = "Votre compte a été créé sur le site " . HTTP_PWD . " avec les identifiants suivants : \n"; $message .= "Adresse e-mail : " . $email . "\n"; $message .= "Mot de passe : " . $no_crypt_password . "\n\n"; $message .= "-------------------------------------\n"; $message .= "Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site http://raspbian-france.fr\n"; if (!mail($email, 'Identifiants RaspiSMS', $message)) { $_SESSION['errormessage'] = 'Impossible d\'envoyer le mail d\'inscription à l\'utilisateur. Le compte n\'a donc pas été créé.'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } if (!$db->insertIntoTable('users', ['email' => $email, 'password' => $password, 'admin' => $admin])) { $_SESSION['errormessage'] = 'Impossible de créer cet utilisateur.'; header('Location: ' . $this->generateUrl('users', 'add')); return false; } $db->insertIntoTable('events', ['type' => 'USER_ADD', 'text' => 'Ajout de l\'utilisateur : ' . $email]); $_SESSION['successmessage'] = 'L\'utilisateur a bien été créé.'; header('Location: ' . $this->generateUrl('users')); return true; }