<?php
+if (isset($_GET['token'])) {
+ @list ($username, $token) = explode(':', $_GET['token']);
+ $userdir = strtolower("profile/$username");
+ if ($verify = @file_get_contents("$userdir/.token")
+ and $verify == $token) {
+ $User = [
+ 'name' => $username,
+ 'dir' => $userdir,
+ 'pass' => NULL,
+ ];
+ }
+ else {
+ print "<p class=warn>Code onjuist, geen toestemming om wachtwoord in te stellen.</p>\n";
+ return TRUE;
+ }
+}
+elseif (!$User) {
+ http_response_code(303);
+ $target = urlencode($_SERVER['REQUEST_URI']);
+ header("Location: /login?goto=$target");
+ exit;
+}
+
if ($_POST) {
$error = passform($_POST);
if (empty($error)) {
return "Het wachtwoord kan niet worden aangepast voor deze gebruiker.";
}
- if (empty($_POST['oldpass'])) {
- return "Als extra beveiliging tegen ongewenste aanpassingen moet het bestaande wachtwoord worden ingevoerd.";
+ if (!empty($User['pass'])) {
+ if (empty($_POST['oldpass'])) {
+ return "Als extra beveiliging tegen ongewenste aanpassingen moet het bestaande wachtwoord worden ingevoerd.";
+ }
+
+ if (!login_password_verify($_POST['oldpass'], $User['pass'])) {
+ return "Het bestaande wachtwoord is onjuist ingevoerd; niet aangepast.";
+ }
}
if (empty($_POST['newpass'])) {
- return "Geef ook een nieuw wachtwoord op.";
+ return "Geef een nieuw wachtwoord op.";
}
if (strlen($_POST['newpass']) < 4) {
return "De loginnaam is wel heel makkelijk raadbaar als wachtwoord.";
}
- if (!login_password_verify($_POST['oldpass'], $User['pass'])) {
- return "Het bestaande wachtwoord is onjuist ingevoerd; niet aangepast.";
- }
-
if (!file_put_contents($pwfile, $_POST['newpass'])) {
return "Het nieuwe wachtwoord kon niet worden opgeslagen. Het oude wachtwoord is behouden.";
}
+ @unlink("{$User['dir']}/.token"); # invalidate reset token
+
$authhash = md5($_POST['newpass']);
$User['auth'] = "{$User['name']}:$authhash";
login_setcookie();
?>
<form method="post">
<p>
+<?php if (!empty($User['pass'])) { ?>
<input type="password" name="oldpass" value="" placeholder="Huidig wachtwoord" />
+<?php } ?>
<input type="password" name="newpass" value="" placeholder="Nieuw wachtwoord" />
<input type="submit" value="Wijzig" />
</p>