Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

added function to reset password and to recover nickname

  • Loading branch information...
commit abb46d6b31d749d25b6b1057e630bf663bd6439b 1 parent 817e743
@DerWaldschrat authored
Showing with 75 additions and 7 deletions.
  1. +49 −0 User/forgotPassword.php
  2. +22 −5 design/index.php
  3. +4 −2 registerconfirm.php
View
49 User/forgotPassword.php
@@ -0,0 +1,49 @@
+<?php
+define("__EXEC", true);
+define("IN", "../");
+define("PHP_EX", ".php");
+require IN . "coreconfig" . PHP_EX;
+require IN . "mapper" . PHP_EX;
+require IN . "validator" . PHP_EX;
+
+post(function () {
+ global $mail;
+ $userdata = bodyAsJSON();
+ if (hasAllSet($userdata, array("passwort", "email"))) {
+ $pass = $userdata->passwort;
+ $email = $userdata->email;
+ require IN . "hasher" . PHP_EX;
+ require IN . "random" . PHP_EX;
+
+ // Lookup user with email adress
+ $st = db()->prepare("SELECT userid, nickname, vorname, nachname, geschlecht, email FROM " . USER . " WHERE email = ?");
+ $st->bind_param("s", $email);
+ $st->bind_result($userdata->userid, $userdata->nickname, $userdata->vorname, $userdata->nachname, $userdata->geschlecht, $userdata->email);
+ if ($st->execute()) {
+ $st->store_result();
+ $st->fetch();
+ if ($st->num_rows === 1 && $email == $userdata->email) {
+ $userdata->passwort = hashme($pass, $userdata->nickname);
+
+ $file = strtolower($userdata->passwort . randomString(56));
+ file_put_contents(IN . "__registered/" . $file . ".json", json_encode($userdata));
+ $mail($email, "Passwortänderung & Nicknamecheck", "Hallo " . $userdata->vorname . " " . $userdata->nachname . ",\n"
+ . " dein Nickname lautet: " . $userdata->nickname
+ . "\n Dein Passwort wird auf " . $pass . " zurückgesetzt, wenn du folgenden Link anklickst:"
+ . "\n" . getUrlToPath("registerconfirm.php?".$file)
+ . "\nViel Spaß weiterhin!");
+ } else {
+ fail("noValidEmail");
+ }
+ } else {
+ fail();
+ }
+ } else {
+ fail("needAllFields");
+ }
+});
+
+
+
+
+?>
View
27 design/index.php
@@ -38,7 +38,9 @@
registrationValid: "Bitte beachte, dass dein Nickname mindestens 3 Zeichen lang ist, du eine gültige E-Mail-Adresse angibts und Vor-, Nachname sowie Passwort wenigstens 2 Zeichen lang sind!",
needAllFields: "Bitte fülle alle Felder aus!",
nicknameNotAvailable: "Bitte wähle einen anderen Nicknamen, deiner ist schon vorhanden!",
- emailNotAvailable: "Bitte nimm eine andere E-Mail-Adresse, diese hier wird schon verwendet!"
+ emailNotAvailable: "Bitte nimm eine andere E-Mail-Adresse, diese hier wird schon verwendet!",
+ passwordRequestSucceed: "Eine E-Mail wurde erfolgreich an dich verschickt!",
+ passwordRequestFail: "Leider konnte dir keine E-Mail zugeschickt werden! Vielleicht hast du dich mit einer anderen E-Mail-Adresse registriert? (Wenn du sie nicht mehr weißt, spreche Hauke an!)"
};
window.$loading = document.createElement("span");
$loading.className = "ajaxLoading";
@@ -214,7 +216,21 @@
}
// The function for the Idiots who have forgotten their password
__faster.forgot = function() {
- // TODO
+ var $email = __faster.byId("fEmail")
+ , $passwort = __faster.byId("fPasswort")
+
+ , props = {
+ email: $email.value,
+ passwort: $passwort.value
+ }
+
+ __faster.request("User/forgotPassword.php", props, function () {
+ __faster.message("fStatus", "passwordRequestSucceed")
+ }, function () {
+ $email.value = ""
+ $passwort.value = ""
+ __faster.message("fStatus", "passwordRequestFail")
+ })
}
__faster.freeTimer = {};
__faster.lastExistsRequest = "";
@@ -307,9 +323,10 @@
<div id="passwortIdiotScreen">
<form action="#" onsubmit="__faster.forgot();return false;">
<ul class="formList">
- <li><label for="fNickname">Trage hier deinen Nickname ein, dann erhälts du ein neues Passwort per E-Mail</label><input type="text" name="fNickname" id="fNickname" class="focusfield" /></li>
- <li><input type="submit" value="Neues Passwort anfordern" /></li>
- <li class="statusField">Wichtig: Dieses Feature ist noch nicht umgesetzt, vergesst also euer Passwort erstmal nicht oder schick eine Mail an mich!</li>
+ <li><label for="fEmail">Trage hier deine E-Mail-Adresse ein, dann erfährst du, was für einen Nickname du besitzt</label><input type="text" name="fEmail" id="fEmail" class="focusfield" /></li>
+ <li><label for="fPasswort">Hier kannst du ein zusätzlich ein neues Passwort eintragen, du erhälst dann einen Link zugeschickt, um es zu ändern:</label><input type="password" name="fPasswort" id="fPasswort" /></li>
+ <li><input type="submit" value="Anfrage starten" /></li>
+ <li class="statusField" id="fStatus"></li>
</ul>
</form>
</div>
View
6 registerconfirm.php
@@ -20,8 +20,10 @@
} else {
// Jetzt können wir den User eintragen
$db = db();
- $query = $db->prepare("UPDATE " . USER . " SET nickname = ?, vorname = ?, nachname = ?, passwort = ?, email = ?, geschlecht = ? WHERE userid = ?");
- $query->bind_param("ssssssi", $user->nickname, $user->vorname, $user->nachname, $user->passwort, $user->email, $user->geschlecht, $user->userid);
+ require IN . "random.php";
+ $cat = randomString(12);
+ $query = $db->prepare("UPDATE " . USER . " SET nickname = ?, vorname = ?, nachname = ?, passwort = ?, email = ?, geschlecht = ?, cat = ? WHERE userid = ?");
+ $query->bind_param("sssssssi", $user->nickname, $user->vorname, $user->nachname, $user->passwort, $user->email, $user->geschlecht, $cat, $user->userid);
if (exQuery($query)) {
unlink($file);
header("Location: ".getUrlToPath("succeedRegister.html#" . $user->nickname));
Please sign in to comment.
Something went wrong with that request. Please try again.