mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
63 lines
1.8 KiB
PHP
63 lines
1.8 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/autoload.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.");
|
|
}
|