2 function passform(&$user, $input = [])
7 return "Log eerst (opnieuw?) in.";
10 $pwfile = "{$user->dir}/.passwd";
11 if (file_exists($pwfile) and !is_writable($pwfile)) {
12 return "Het wachtwoord kan niet worden aangepast voor deze gebruiker.";
15 if (!empty($user->pass) and !$User->admin('user') ) {
16 if (empty($input['oldpass'])) {
17 return "Als extra beveiliging tegen ongewenste aanpassingen moet het bestaande wachtwoord worden ingevoerd.";
20 if (!login_password_verify($input['oldpass'], $user->pass)) {
21 return "Het bestaande wachtwoord is onjuist ingevoerd; niet aangepast.";
25 if ($input['newpass'] == 'GEN') {
26 $passstore = random_int(10000, 99999);
29 if (empty($input['newpass'])) {
30 return "Geef een nieuw wachtwoord op.";
33 if (strlen($input['newpass']) < 4) {
34 return "Zo'n kort wachtwoord is een slecht idee.";
37 if ($input['newpass'] == $user->login) {
38 return "De loginnaam is wel heel makkelijk raadbaar als wachtwoord.";
41 if ($input['newpass'] != $input['passconf']) {
42 return "Zorg dat bij de bevestiging precies het zelfde wachtwoord staat.";
45 $passstore = password_hash($input['newpass'], PASSWORD_DEFAULT);
48 if (empty($passstore) or !file_put_contents($pwfile, $passstore)) {
49 return "Het nieuwe wachtwoord kon niet worden opgeslagen. Het oude wachtwoord is behouden.";
52 @unlink("{$user->dir}/.token"); # invalidate reset token
54 $authhash = md5($passstore);
55 $user->auth = "{$user->login}:$authhash";
56 if ($User === $user) {