Files
newznab-tmux/misc/testing/DB/setUserPasswordHash.php
T
2017-11-22 13:44:09 +01:00

63 lines
1.7 KiB
PHP

<?php
/*
* This script allows you to (re)set the hashed password for any user account.
*
* The main use is for when admin is locked out of the site access for any
* reason, it will allow the password hash on the account to be changed.
* Hopefully that will allow admin access to fix any further problems.
*/
require_once dirname(__DIR__, 3).DIRECTORY_SEPARATOR.'bootstrap.php';
use nntmux\db\DB;
use nntmux\Users;
$pdo = new DB();
if ($argc < 3) {
exit(
$pdo->log->error(
'Not enough parameters!'.PHP_EOL.
'Argument 1: New password.'.PHP_EOL.
'Argument 2: ID or username of the user.'.PHP_EOL
)
);
}
$password = $argv[1];
$identifier = $argv[2];
if (is_numeric($password)) {
exit($pdo->log->error('Password cannot be numbers only!'));
}
$field = (is_numeric($identifier) ? 'id' : 'username');
$user = $pdo->queryOneRow(
sprintf(
'SELECT id, username FROM users WHERE %s = %s',
$field,
(is_numeric($identifier) ? $identifier : $pdo->escapeString($identifier))
)
);
if ($user !== false) {
$users = new Users();
$hash = $users->hashPassword($password);
$result = false;
if ($hash !== false) {
$hash = $pdo->queryExec(
sprintf(
'UPDATE users SET password = %s WHERE id = %d',
$hash,
$user['id']
)
);
}
if ($result === false || $hash === false) {
$pdo->log->error('An error occured during update attempt.'.PHP_EOL);
} else {
$pdo->log->headerOver("Updated {$user['username']}'s password hash to: ").$pdo->log->primary("$hash");
}
} else {
$pdo->log->error("Unable to find {$field} '{$identifier}' in the users. Cannot change password.");
}