54 lines
1.7 KiB
PHP
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;
|
|
}
|