diff --git a/admin/src/AdminAuth.php b/admin/src/AdminAuth.php index b2b5f64..5699db2 100644 --- a/admin/src/AdminAuth.php +++ b/admin/src/AdminAuth.php @@ -211,6 +211,29 @@ class AdminAuth return ['success' => false, 'message' => 'Gebruiker niet gevonden.']; } + public function changeOwnPassword(string $username, string $currentPassword, string $newPassword): array + { + $user = $this->findUser($username); + if (!$user) { + return ['success' => false, 'message' => 'Gebruiker niet gevonden.']; + } + if (!password_verify($currentPassword, $user['password_hash'])) { + return ['success' => false, 'message' => 'Huidig wachtwoord is onjuist.']; + } + if (strlen($newPassword) < 8) { + return ['success' => false, 'message' => 'Nieuw wachtwoord moet minimaal 8 tekens zijn.']; + } + foreach ($this->adminConfig['users'] as &$u) { + if ($u['username'] === $username) { + $u['password_hash'] = password_hash($newPassword, PASSWORD_DEFAULT); + $this->saveAdminConfig(); + $this->log('info', "Eigen wachtwoord gewijzigd: {$username}"); + return ['success' => true, 'message' => 'Wachtwoord gewijzigd.']; + } + } + return ['success' => false, 'message' => 'Fout bij wijzigen wachtwoord.']; + } + // --- Private helpers --- private function findUser(string $username): ?array diff --git a/admin/templates/layout.php b/admin/templates/layout.php index b8b6fb5..b5bf098 100644 --- a/admin/templates/layout.php +++ b/admin/templates/layout.php @@ -1,4 +1,13 @@ - + @@ -8,7 +17,7 @@