Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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;
 }