From: Mischa POSLAWSKY Date: Tue, 24 Apr 2018 22:07:18 +0000 (+0200) Subject: login/pass: allow token instead of login X-Git-Tag: v2.6~2 X-Git-Url: http://git.shiar.net/minimedit.git/commitdiff_plain/f791d0e5122d97a7647b9d8935e351518b3f499f 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. --- 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 = []) ?>

+ +