コード例 #1
0
 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');
 }
コード例 #2
0
 public function reset()
 {
     $usersManager = new \W\Manager\UserManager();
     $tokensManager = new \Manager\TokensManager();
     $newToken = new \W\Security\StringUtils();
     $layout = array('ismain' => false, 'form' => false);
     if (isset($_POST['sent'])) {
         if ($usersManager->emailExists($_POST['email'])) {
             $token = $newToken->randomString();
             $email = $_POST['email'];
             if ($tokensManager->findEmail($_POST['email'])) {
                 $toInsert = array('token' => $token);
                 $tokensManager->updateFromEmail($toInsert, $_POST['email']);
             } else {
                 $toInsert = array('email' => $email, 'token' => $token);
                 $tokensManager->insert($toInsert);
             }
             echo "<p>Un email vous a été envoyé pour réinitialiser vôtre mot de passe</p>";
             echo '<a href="/">Retour a l\'accueil</a>';
             $message = '<p>Voici le lien pour réinitialiser vôtre mot de passe</p>' . '<br>' . '<a href="http://www.crescendo.site/newpass/' . $token . '">réinitialiser mon mot de passe</a>';
             $to = $email;
             $subject = 'CrescendO : Réinitialisation du mot de passe.';
             $message = $message;
             $headers = 'From: service@crescendo.site' . "\r\n" . 'Reply-To: service@crescendo.site' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
             mail($to, $subject, $message, $headers);
         } else {
             echo "<p>L'email renseigné n'existe pas.</p>";
         }
     }
     $this->show('choristes/resetPass', ['layout' => $layout]);
 }