--- /dev/null
+<?php
+if ($_POST) {
+ $error = passform($_POST);
+ if (empty($error)) {
+ print "<p>Het wachtwoord is aangepast. Voortaan met het nieuwe wachtwoord inloggen.</p>\n\n";
+ return;
+ }
+ print "<p class=warn>$error</p>\n\n";
+}
+
+function passform($input = [])
+{
+ global $User;
+
+ if (empty($User)) {
+ return "Log eerst (opnieuw?) in.";
+ }
+
+ $pwfile = "{$User['dir']}/.passwd";
+ if (!is_writable($pwfile)) {
+ 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($_POST['newpass'])) {
+ return "Geef ook een nieuw wachtwoord op.";
+ }
+
+ if (strlen($_POST['newpass']) < 4) {
+ return "Zo'n kort wachtwoord is een slecht idee.";
+ }
+
+ if ($_POST['newpass'] == $User['name']) {
+ 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.";
+ }
+
+ $authhash = md5($_POST['newpass']);
+ $User['auth'] = "{$User['name']}:$authhash";
+ login_setcookie();
+ return;
+}
+
+?>
+<form method="post">
+<p>
+<input type="password" name="oldpass" value="" placeholder="Huidig wachtwoord" />
+<input type="password" name="newpass" value="" placeholder="Nieuw wachtwoord" />
+<input type="submit" value="Wijzig" />
+</p>
+</form>