Skip to content

Commit

Permalink
added function to reset password and to recover nickname
Browse files Browse the repository at this point in the history
  • Loading branch information
DerWaldschrat committed Jul 13, 2012
1 parent 817e743 commit abb46d6
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 7 deletions.
49 changes: 49 additions & 0 deletions User/forgotPassword.php
Original file line number Original file line Diff line number Diff line change
@@ -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");
}
});




?>
27 changes: 22 additions & 5 deletions design/index.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -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!", 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!", needAllFields: "Bitte fülle alle Felder aus!",
nicknameNotAvailable: "Bitte wähle einen anderen Nicknamen, deiner ist schon vorhanden!", 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"); window.$loading = document.createElement("span");
$loading.className = "ajaxLoading"; $loading.className = "ajaxLoading";
Expand Down Expand Up @@ -214,7 +216,21 @@
} }
// The function for the Idiots who have forgotten their password // The function for the Idiots who have forgotten their password
__faster.forgot = function() { __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.freeTimer = {};
__faster.lastExistsRequest = ""; __faster.lastExistsRequest = "";
Expand Down Expand Up @@ -307,9 +323,10 @@
<div id="passwortIdiotScreen"> <div id="passwortIdiotScreen">
<form action="#" onsubmit="__faster.forgot();return false;"> <form action="#" onsubmit="__faster.forgot();return false;">
<ul class="formList"> <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><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><input type="submit" value="Neues Passwort anfordern" /></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 class="statusField">Wichtig: Dieses Feature ist noch nicht umgesetzt, vergesst also euer Passwort erstmal nicht oder schick eine Mail an mich!</li> <li><input type="submit" value="Anfrage starten" /></li>
<li class="statusField" id="fStatus"></li>
</ul> </ul>
</form> </form>
</div> </div>
Expand Down
6 changes: 4 additions & 2 deletions registerconfirm.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@
} else { } else {
// Jetzt können wir den User eintragen // Jetzt können wir den User eintragen
$db = db(); $db = db();
$query = $db->prepare("UPDATE " . USER . " SET nickname = ?, vorname = ?, nachname = ?, passwort = ?, email = ?, geschlecht = ? WHERE userid = ?"); require IN . "random.php";
$query->bind_param("ssssssi", $user->nickname, $user->vorname, $user->nachname, $user->passwort, $user->email, $user->geschlecht, $user->userid); $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)) { if (exQuery($query)) {
unlink($file); unlink($file);
header("Location: ".getUrlToPath("succeedRegister.html#" . $user->nickname)); header("Location: ".getUrlToPath("succeedRegister.html#" . $user->nickname));
Expand Down

0 comments on commit abb46d6

Please sign in to comment.