reset.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. require_once('app.php');
  3. if (isset($_POST['key'])) {
  4. $key = $conn->escape_string($_POST['key']);
  5. $sql = "SELECT userid FROM PasswordReset WHERE `key`='$key'";
  6. if ($query = $conn->query($sql)) {
  7. $userid = $query->fetchArray()['userid'];
  8. } else {
  9. queue_message(new Message("SQL error: " . $conn->error, "danger"));
  10. header('Location: /');
  11. }
  12. $rawPass = $_POST['pass'];
  13. $rawRepeat = $_POST['pass_repeat'];
  14. if (changePassword($userid, $rawPass, $rawRepeat)) {
  15. $conn->query("DELETE FROM PasswordReset WHERE `key`='$key'");
  16. }
  17. } else if (isset($_POST['email'])) {
  18. $email = $conn->escape_string($_POST['email']);
  19. $sql = "SELECT UID FROM Users WHERE Email='$email'";
  20. if ($query = $conn->query($sql)) {
  21. $userid = $query->fetchArray()['UID'];
  22. } else {
  23. queue_message(new Message("No account has that e-mail address registered.", "danger"));
  24. header('Location: /');
  25. }
  26. $key = generateKey(32);
  27. $sql = "INSERT INTO PasswordReset VALUES ('$userid', '$key')";
  28. if ($conn->query($sql)) {
  29. $external_url = Config::$external_url;
  30. mail($email, Config::$sitename . " password reset", "To reset your password, navigate to this address: $external_url/login/?reset&key=$key");
  31. } else {
  32. echo $conn->error;
  33. }
  34. } else {
  35. if (isset($_GET['key'])) {
  36. $key = $_GET['key'];
  37. ?>
  38. <div class="login-panel panel panel-default">
  39. <div class="panel-heading">
  40. <h3 class="panel-title"><i class="fa fa-lock"></i> <?php echo Config::$sitename . " password reset" ?></h3>
  41. </div>
  42. <div class="panel-body">
  43. <form role="form" action="" method="post">
  44. <fieldset>
  45. <div class="form-group">
  46. <input class="form-control" placeholder="New password" name="pass" autofocus="" type="password">
  47. </div>
  48. <div class="form-group">
  49. <input class="form-control" placeholder="Repeat password" name="pass_repeat" value="" type="password">
  50. </div>
  51. <input type="hidden" name="key" value="<?php echo $key ?>" />
  52. <input class="btn btn-primary btn-lg btn-block" type="submit" value="Reset password"/>
  53. </fieldset>
  54. </form>
  55. </div>
  56. </div>
  57. <?php
  58. } else {
  59. ?>
  60. <div class="login-panel panel panel-default">
  61. <div class="panel-heading">
  62. <h3 class="panel-title"><i class="fa fa-lock"></i> <?php echo Config::$sitename . " password reset" ?></h3>
  63. </div>
  64. <div class="panel-body">
  65. <form role="form" action="" method="post">
  66. <fieldset>
  67. <div class="form-group">
  68. <input class="form-control" placeholder="Account E-mail address" name="email" autofocus="" type="email">
  69. </div>
  70. <input class="btn btn-primary btn-lg btn-block" type="submit" value="Send reset link"/>
  71. </fieldset>
  72. </form>
  73. </div>
  74. </div>
  75. <?php
  76. }
  77. die();
  78. }
  79. header('Location: /');
  80. ?>