account.lost.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. require_once (__DIR__.DIRECTORY_SEPARATOR.'header.php');
  3. global $conf,$myUser,$myFirm,$_;
  4. if($myUser->connected()) throw new Exception("Vous devez être déconnecté pour accéder à cette fonctionnalité");
  5. $_['section'] = !isset($_['section']) ? 'global': $_['section'];
  6. $accountMenu = array();
  7. $page = basename($_SERVER['PHP_SELF']);
  8. if(isset($_['token'])){
  9. $tokenInfos = explode('::',base64_decode($_['token']));
  10. if(count($tokenInfos)!=3) throw new Exception("Token expiré ou inexistant");
  11. list($login,$token,$step) = $tokenInfos;
  12. $baseToken = UserPreference::load(array('user'=>$login,'key'=>'lost_password'));
  13. if(!$baseToken || $baseToken->value!=$token) throw new Exception("expiré ou inexistant");
  14. if(!empty($conf->get('password_lost_mail_expire')) && (time()-$baseToken->created) > strtotime(intval($conf->get('password_lost_mail_expire')).' days', 0)) throw new Exception("Lien de récupération expiré");
  15. if(!$user = User::load(array('login'=>$login))) throw new Exception("Token expiré ou inexistant");
  16. }
  17. ?>
  18. <div class="row justify-content-md-center">
  19. <div class="col-lg-7 col-xl-5 text-center mt-3">
  20. <div class="row justify-content-center">
  21. <?php if(isset($_['token'])):
  22. switch($step) {
  23. case 1:
  24. ?>
  25. <h5 class="text-muted text-uppercase col-xl-12"><i class="fas fa-unlock mr-1"></i>Récupération de mot de passe</h5>
  26. <div class="col-lg-xl-12 my-4">
  27. <h5>Bienvenue <?php echo $user->fullName(); ?>!</h6>
  28. <p class="mt-4 mb-2">Veuillez récupérer votre nouveau mot de passe en cliquant sur le bouton ci-dessous :</p>
  29. <a class="btn btn-primary w-100" href="<?php echo ROOT_URL.'/account.lost.php?token='.base64_encode($user->login.'::'.$token.'::2'); ?>"><i class="fas fa-fw fa-key mr-1"></i>Récupérer le mot de passe</a>
  30. </div>
  31. <?php
  32. break;
  33. case 2:
  34. //Suppression de l'indicateur de réinitialisation de mot de passe
  35. UserPreference::deleteById($baseToken->id);
  36. //Génération du nouveau mot de passe
  37. $newPassword = User::generate_password(12);
  38. $user->password = User::password_encrypt($newPassword);
  39. $user->save();
  40. ?>
  41. <h5 class="text-muted text-uppercase col-xl-12"><i class="fas fa-unlock mr-1"></i>Mot de passe réinitialisé</h5>
  42. <p class="mt-2 px-3">Bonjour, <?php echo $user->fullName(); ?>,<br>vous pouvez dès à présent vous connecter avec les éléments suivants :</p>
  43. <ul class="list-unstyled px-5 text-left">
  44. <li><strong>Identifiant :</strong> <code class="font-weight-bold bg-light p-2 pointer" onclick="select_text(this, event);copy_string($(this).text(), this);"><?php echo $user->login; ?></code></li>
  45. <li><strong>Mot de passe : </strong><code class="font-weight-bold bg-light p-2 pointer" onclick="select_text(this, event);copy_string($(this).text(), this);"><?php echo $newPassword; ?></code></li>
  46. </ul>
  47. <a href="index.php" class="btn btn-success mt-2 w-100" ><i class="fas fa-home"></i> Retour à l'accueil</a>
  48. <?php
  49. break;
  50. default:
  51. throw new Exception("Token expiré ou inexistant");
  52. break;
  53. }
  54. else: ?>
  55. <h5 class="text-muted text-uppercase col-xl-12"><i class="fas fa-unlock mr-1"></i>Mot de passe oublié</h5>
  56. <p class="col-xl-12 my-4">
  57. Veuillez remplir le formulaire ci dessous pour procéder au changement de mot de passe.<br>
  58. Un e-mail sera envoyé à la boite spécifiée si celle ci est liée à un compte.
  59. </p>
  60. <div class="col-xl-6 col-lg-8">
  61. <span class="d-block w-100 mb-1"><i class="far fa-fw fa-envelope mr-1"></i><small class="text-muted">Adresse e-mail du compte :</small></span>
  62. <input class="form-control m-auto text-center" placeholder="email@email.com" type="text" id="mail">
  63. <div class="btn btn-primary w-100 mt-2" id="lost-password-send" onclick="core_account_lost_password(this);"><i class="far fa-envelope-open"></i> Récupérer</div>
  64. </div>
  65. <?php endif; ?>
  66. </div>
  67. </div>
  68. </div>
  69. <?php require_once (__DIR__.DIRECTORY_SEPARATOR.'footer.php'); ?>