Пример #1
0
 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');
 }
Пример #3
0
 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');
 }
Пример #4
0
	/**
	 * 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));
	}
Пример #5
0
 /**
  * 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]);
 }