From f791d0e5122d97a7647b9d8935e351518b3f499f Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 25 Apr 2018 00:07:18 +0200 Subject: [PATCH] login/pass: allow token instead of login Only on this page a code can be used instead of valid user in case password was forgotten. --- login/pass.php | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/login/pass.php b/login/pass.php index 829aff4..1494e37 100644 --- a/login/pass.php +++ b/login/pass.php @@ -1,4 +1,27 @@ $username, + 'dir' => $userdir, + 'pass' => NULL, + ]; + } + else { + print "

Code onjuist, geen toestemming om wachtwoord in te stellen.

\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)) { @@ -21,12 +44,18 @@ function passform($input = []) 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) { @@ -37,14 +66,12 @@ function passform($input = []) 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(); @@ -54,7 +81,9 @@ function passform($input = []) ?>

+ +

-- 2.30.0