Files
yogibook_aury_new/tools/check_default_passwords.php
T

54 lines
1.7 KiB
PHP

<?php
/**
* Controllo account con la vecchia password predefinita "YogiBook159".
* Da eseguire SOLO da riga di comando, dalla cartella principale del progetto:
*
* php tools/check_default_passwords.php -> elenca gli account
* php tools/check_default_passwords.php --reset -> assegna una password casuale
*
* Dopo il reset le allieve entrano con "Password dimenticata?" dalla pagina di login.
*/
if (PHP_SAPI !== 'cli') {
http_response_code(404);
exit;
}
require_once dirname(__DIR__) . '/public/class/db-functions.php';
$pdo = DBHandlerSelect::getInstance()->getConnection();
$default = 'YogiBook159';
$doReset = in_array('--reset', $argv, true);
$users = $pdo->query("SELECT id, email, first_name, last_name, password, last_login FROM auth_users")->fetchAll();
$found = [];
foreach ($users as $u) {
if (!empty($u['password']) && password_verify($default, $u['password'])) {
$found[] = $u;
}
}
echo "Account con password predefinita: " . count($found) . " su " . count($users) . PHP_EOL . PHP_EOL;
foreach ($found as $u) {
printf(
"#%-6d %-40s %s %s (ultimo accesso: %s)%s",
$u['id'],
$u['email'],
$u['first_name'],
$u['last_name'],
$u['last_login'] ?: 'mai',
PHP_EOL
);
}
if ($doReset && $found) {
$upd = $pdo->prepare("UPDATE auth_users SET password = ? WHERE id = ?");
foreach ($found as $u) {
$upd->execute([password_hash(bin2hex(random_bytes(16)), PASSWORD_BCRYPT), $u['id']]);
}
echo PHP_EOL . "Reset eseguito: " . count($found) . " account ora hanno una password casuale." . PHP_EOL;
} elseif ($found) {
echo PHP_EOL . "Nessuna modifica. Per assegnare password casuali: php tools/check_default_passwords.php --reset" . PHP_EOL;
}