render('profile/default'); } /** * Cette fonction change le mot de passe de l'utilisateur * @param $csrf : Le jeton CSRF * @param string $_POST['password'] : Le nouveau mot de passe de l'utilisateur * @param string $_POST['verif_password'] : La vérification du nouveau mot de passe de l'utilisateur * @return void; */ public function changePassword($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('profile')); return false; } //Creation de l'object de base de données global $db; if (empty($_POST['password']) || empty($_POST['verif_password']) || $_POST['password'] != $_POST['verif_password']) { $_SESSION['errormessage'] = 'Les mots de passe ne correspondent pas.'; header('Location: ' . $this->generateUrl('profile')); return false; } $user = $db->getFromTableWhere('users', ['email' => $_SESSION['email']]); $password = sha1($_POST['password']); if (!$db->updateTableWhere('users', ['password' => $password], ['id' => $user[0]['id']])) { $_SESSION['errormessage'] = 'Impossible de mettre à jour le mot de passe.'; header('Location: ' . $this->generateUrl('profile')); return false; } $_SESSION['successmessage'] = 'Les données ont été mises à jour.'; header('Location: ' . $this->generateUrl('profile')); return true; } /** * Cette fonction change la valeur du champ "transfer" de l'utilisateur * @param $csrf : Le jeton CSRF * @param string $_POST['transfer'] : Le nouveau transfer de l'utilisateur * @return void; */ public function changeTransfer($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('profile')); return false; } //Creation de l'object de base de données global $db; if (!isset($_POST['transfer'])) { $_SESSION['errormessage'] = 'Vous devez renseigner un valeur'; header('Location: ' . $this->generateUrl('profile')); return false; } $transfer = (boolean)$_POST['transfer']; if (!$db->updateTableWhere('users', ['transfer' => $transfer], ['email' => $_SESSION['email']])) { $_SESSION['errormessage'] = 'Impossible de mettre les données à jour.'; header('Location: ' . $this->generateUrl('profile')); return false; } $_SESSION['transfer'] = $transfer; $_SESSION['successmessage'] = 'Les données ont été mises à jour.'; header('Location: ' . $this->generateUrl('profile')); return true; } /** * Cette fonction change l'email de l'utilisateur * @param $csrf : Le jeton CSRF * @param string $_POST['email'] : Le nouvel email de l'utilisateur * @param string $_POST['verif_email'] : La vérification du nouvel email de l'utilisateur * @return void; */ public function changeEmail($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('profile')); return false; } //Creation de l'object de base de données global $db; if (empty($_POST['mail']) || empty($_POST['verif_mail']) || $_POST['mail'] != $_POST['verif_mail']) { $_SESSION['errormessage'] = 'Les e-mails ne correspondent pas.'; header('Location: ' . $this->generateUrl('profile', array( 'errormessage' => 'Les e-mails ne correspondent pas.' ))); return false; } $email = $_POST['mail']; if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $_SESSION['errormessage'] = 'L\'adresse e-mail est invalide.'; header('Location: ' . $this->generateUrl('profile')); return false; } $user = $db->getFromTableWhere('users', ['email' => $_SESSION['email']]); if (!$db->updateTableWhere('users', ['email' => $email], ['id' => $user[0]['id']])) { $_SESSION['errormessage'] = 'Cette adresse e-mail est déjà utilisée.'; header('Location: ' . $this->generateUrl('profile')); return false; } $_SESSION['email'] = $email; $_SESSION['successmessage'] = 'Les données ont été mises à jour.'; header('Location: ' . $this->generateUrl('profile')); return true; } /** * Cette fonction supprime l'utilisateur * @param $csrf : Le jeton CSRF * @param string $_POST['delete_account'] : La vérification que l'on veux bien supprimer l'utilisateur * @return void; */ public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('profile')); return false; } //Creation de l'object de base de données global $db; //Si l'utilisateur veux vraiment supprimer son compte if (empty($_POST['delete_account'])) { $_SESSION['errormessage'] = 'Le compte n\'a pas été supprimé'; header('Location: ' . $this->generateUrl('profile')); return false; } if (!$db->deleteFromTableWhere('users', ['email' => $_SESSION['email']])) { $_SESSION['errormessage'] = 'Impossible de supprime le compte'; header('Location: ' . $this->generateUrl('profile')); return false; } $this->logout(); return true; } /** * Cette fonction déconnecte un utilisateur et le renvoie sur la page d'accueil * @return void */ public function logout() { session_unset(); session_destroy(); header('Location: ' . $this->generateUrl('')); return true; } }