public function forgotPassword() { $userManager = new UserManager(); $email = ""; $errorEmail = ""; if (!empty($_POST)) { $string = new StringUtils(); $token = $string->randomString(); $hashedToken = password_hash($token, PASSWORD_DEFAULT); $email = trim(strip_tags($_POST['email'])); if ($userManager->emailExists($email)) { $user = $userManager->getUserByUsernameOrEmail($email); $username = $user['username']; $userManager->update(array("token" => $hashedToken), $user['id']); $mail = new \PHPMailer(); $mail->isSMTP(); $mail->setLanguage('fr'); $mail->CharSet = 'UTF-8'; $mail->SMTPDebug = 2; //0 pour désactiver les infos de débug $mail->Debugoutput = 'html'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = "******"; $mail->Password = "******"; $mail->setFrom('*****@*****.**', 'Service de Messagerie BDloc'); $mail->addAddress($user['email']); $mail->isHTML(true); $mail->Subject = 'Changement de mot de passe'; $mail->Body = '<a href="www.bdloc.dev/change_password/?token=' . $token . '&username='******'">Cliquer ici pour créer un nouveau mot de passe</a>'; if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } $this->redirectToRoute('login'); } else { $errorEmail = "Email non valide !"; } } $data['errorEmail'] = $errorEmail; $this->show('user/forgot_Password', $data); }
public function lostPassword() { $email = $_POST['email']; // je vérifie si l'email existe en DB $usersManager = new \W\Manager\UserManager(); $emailExists = $usersManager->emailExists($email); if ($emailExists) { // je récupère l'id de l'utilisateur et son nom $currentUser = $usersManager->getUserByUsernameOrEmail($email); $idUser = $currentUser['id']; $nomUser = $currentUser['nom']; // je crée un token (une chaine de 32 caractères aléatoires) $token = \W\Security\StringUtils::randomString(32); // j'insère en DB le token et l'id de l'utilisateur $tokenManager = new \Manager\TokenManager(); $tokenManager->insert(['token' => $token, 'id_users' => $idUser]); // j'envoi un email avec un lien // et donc j'ai une route en GET /login/lostpassword/[:token] $usersManager = new \Manager\UserManager(); $this->sendMail($email, $token, $nomUser); } $this->redirectToRoute('login'); }
public function forgetpassword() { unset($_SESSION['error']); if ($_POST) { if (\isIsset($_POST)) { $emailPasswordRecovery = $_POST['emailPasswordRecovery']; if (filter_var($emailPasswordRecovery, FILTER_VALIDATE_EMAIL)) { $usermanager = new \Manager\UserManager(); if ($usermanager->emailExists($emailPasswordRecovery)) { $user = $usermanager->getUserByUsernameOrEmail($emailPasswordRecovery); if (\isComfirmedAccount($user['id'])) { //On ne peut pas réinitialiser son password si le compte n'est pas confirmé $token = \W\Security\StringUtils::randomString(32); $tokentime = time() + 20 * 60; $usermanager->update(['token' => password_hash($token, PASSWORD_DEFAULT), 'token_timestamp' => $tokentime], $user['id']); $lien = '<a href="' . $this->generateUrl('mailPassword', ['token' => $token, 'id' => $user['id']], true) . '">http://www.mudeo.com/verif/u675CXIV9YOLHbYIjhgc8O7UNM</a>'; $lien_img = "od972.free.fr/logo.png"; $msg = "<img src='" . $lien_img . "' style='width:100px;height:100px'/> <h2>Mudéo </h2>"; $msg .= "<h4>MFF Corp.</h4><br/><br/>"; $msg .= "Pour pouvoir changer votre mot de passe <span style='font-weight:bold;'>" . strtoupper($user['username']) . "</span>. Veuillez cliquer sur le lien suivant qui vous redirigera vers notre site<br/><br/>" . $lien; require_once 'assets/inc/mailer.php'; smtpmailer('*****@*****.**', '*****@*****.**', 'Admin', 'Vérification de la création de compte Mudéo', $msg); if (isset($errorMail)) { $_SESSION['error']['forgetpassword'] = $error; } else { $_SESSION['error']['forgetpassword'] = "******"; } } else { $_SESSION['error']['forgetpassword'] = "******" . $user['email'] . " avant de pouvoir utiliser cette fonctionalité"; } } else { $_SESSION['error']['forgetpassword'] = "******"; } } else { $_SESSION['error']['forgetpassword'] = "******"; } } else { $_SESSION['error']['forgetpassword'] = "******"; } } $this->show('Default/home'); }
/** * Réinitialisation du mot de passe */ public function envoimdp() { //récupération d'un objet utilisateur $utilisateur = new \Manager\UtilisateurManager(); //création d'un objet user $user = new UserManager; //netoyage de l'email saisie $userMail = htmlentities($_POST['mailOublie']); // recup des infos de l'utilisateur grace à l'email $userInfo = $user->getUserByUsernameOrEmail($userMail); // recup de l'id utilisateur $idUser = $userInfo['id']; // generation aléatoire d'un nouveau mot de passe $newMdp = \W\Security\StringUtils::randomString(32); // création d'un tableau contenant le nouveau mot de passe // crypter avec password_hash $tUtilisateur = ['password' => password_hash($newMdp, PASSWORD_DEFAULT)]; // update dans la base $utilisateur->update($tUtilisateur, $idUser, $stripTags = true); // afficher le formulaire $this->show('utilisateur/oubliemdp', array('userMail'=>$userMail, 'mdp'=>$newMdp)); }
/** * Page de mot de passe oublié */ public function forgetpassword() { $error = ''; if ($_POST) { $email = $_POST['email']; // vérifie qu'il existe $userManager = new \Manager\UserManager(); $user = $userManager->getUserByUsernameOrEmail($email); if ($user) { // phpMailer $token = \W\Security\StringUtils::randomString(32); $userManager->update(['token' => password_hash($token, PASSWORD_DEFAULT)], $user['id']); $resetLink = $this->generateUrl('newpassword', ['token' => $token, 'username' => $user['username']], true); // envoie du resetLink par mail : appel de la classe SendMail() $mail = new \Utils\EmailSender($user['email']); $mail->setSubject('Changement de mot de passe'); $mail->setContentMessage($resetLink); $mail->sendEmail(); if (!$mail->getIsSend()) { var_dump('PROBLEME Envoie Mail'); } else { var_dump($resetLink); } die; } else { $error = 'Email non connu dans la base'; } } $this->show('user/forgetpassword', ['error' => $error]); }