Nieuwe features: - Admin gebruikerslijst met zoeken/filter op gebruikersnaam en rol - Profiel bewerken pagina met wachtwoord wijzigen en rol wijzigen - Nieuwe gebruiker aanmaken via aparte pagina - CLI commando cli/reset-admin-password.php voor admin wachtword reset + lockout reset Architectuur: - /admin/users: lijst met zoekveld, rol filter, bewerk/verwijder acties - /admin/users-edit?user=<naam>: profiel, wachtwoord, rol, verwijderen - /admin/users-new: nieuwe gebruiker aanmaken - AdminAuth::clearLockout() public methode voor CLI gebruik Documentatie: - guide/nl/en/admin-beheerder/gebruikers.md herschreven - 15 nieuwe admin vertaalkeys in NL/EN/DE - Release notes: docs/release-notes/v2.6.1c.md Tests: - Pentest: 30/30 geslaagd, 0 vulnerabilities - WCAG 2.1 AA: 25/25 geslaagd, 100% compliance
80 lines
2.4 KiB
PHP
Executable File
80 lines
2.4 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
/**
|
|
* CodePress CMS — Admin wachtwoord reset CLI
|
|
*
|
|
* Gebruik:
|
|
* php cli/reset-admin-password.php [gebruikersnaam] [nieuw_wachtwoord]
|
|
*
|
|
* Als geen wachtwoord opgegeven, wordt een random wachtwoord gegenereerd.
|
|
* Wisst ook brute-force lockout voor de gebruiker.
|
|
*
|
|
* Voorbeelden:
|
|
* php cli/reset-admin-password.php admin
|
|
* php cli/reset-admin-password.php admin MijnNieuweWachtwoord123
|
|
*/
|
|
|
|
if (php_sapi_name() !== 'cli') {
|
|
fwrite(STDERR, "Dit script kan alleen via de CLI uitgevoerd worden.\n");
|
|
exit(1);
|
|
}
|
|
|
|
$rootDir = dirname(__DIR__);
|
|
require_once $rootDir . '/admin/src/AdminAuth.php';
|
|
|
|
$appConfig = require $rootDir . '/admin/config/app.php';
|
|
|
|
// Argumenten parsen
|
|
$username = $argv[1] ?? '';
|
|
$password = $argv[2] ?? '';
|
|
|
|
if ($username === '') {
|
|
echo "CodePress CMS — Admin wachtwoord reset\n";
|
|
echo "========================================\n\n";
|
|
echo "Gebruik: php cli/reset-admin-password.php [gebruikersnaam] [nieuw_wachtwoord]\n\n";
|
|
echo "Als geen wachtwoord opgegeven, wordt een random wachtwoord gegenereerd.\n\n";
|
|
echo "Voorbeelden:\n";
|
|
echo " php cli/reset-admin-password.php admin\n";
|
|
echo " php cli/reset-admin-password.php admin MijnNieuweWachtwoord123\n";
|
|
exit(1);
|
|
}
|
|
|
|
// AdminAuth aanmaken (zonder sessie requirements)
|
|
$auth = new AdminAuth($appConfig);
|
|
|
|
// Controleren of de gebruiker bestaat
|
|
$users = $auth->getUsers();
|
|
if (!isset($users[$username])) {
|
|
fwrite(STDERR, "Fout: Gebruiker '$username' niet gevonden.\n");
|
|
fwrite(STDERR, "Beschikbare gebruikers: " . implode(', ', array_keys($users)) . "\n");
|
|
exit(1);
|
|
}
|
|
|
|
// Wachtwoord genereren als niet opgegeven
|
|
if ($password === '') {
|
|
$password = bin2hex(random_bytes(12));
|
|
$generated = true;
|
|
} else {
|
|
$generated = false;
|
|
}
|
|
|
|
// Wachtwoord wijzigen
|
|
$result = $auth->changePassword($username, $password);
|
|
if (!$result['success']) {
|
|
fwrite(STDERR, "Fout: " . $result['message'] . "\n");
|
|
exit(1);
|
|
}
|
|
|
|
// Lockout wissen
|
|
$auth->clearLockout($username);
|
|
|
|
echo "CodePress CMS — Admin wachtwoord reset\n";
|
|
echo "========================================\n\n";
|
|
echo "Gebruiker: $username\n";
|
|
echo "Wachtwoord: $password\n";
|
|
if ($generated) {
|
|
echo " (automatisch gegenereerd — bewaar dit veilig)\n";
|
|
}
|
|
echo "\n";
|
|
echo "Lockout voor '$username' is gewist.\n";
|
|
echo "Je kunt nu inloggen via /admin met het nieuwe wachtwoord.\n"; |