added new cli command froxlor:user for unlocking, password-changing and info-display of a user

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2022-08-21 12:47:20 +02:00
parent f389226aae
commit bcda1d51c4
4 changed files with 192 additions and 53 deletions

View File

@@ -126,57 +126,4 @@ final class RunApiCommand extends CliCommand
return ['class' => $command[0], 'function' => $command[1]];
}
private function getUserByName(?string $loginname): array
{
if (empty($loginname)) {
throw new Exception("Empty username");
}
$stmt = Database::prepare("
SELECT `loginname` AS `customer`
FROM `" . TABLE_PANEL_CUSTOMERS . "`
WHERE `loginname`= :loginname
");
Database::pexecute($stmt, [
"loginname" => $loginname
]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row && $row['customer'] == $loginname) {
$table = "`" . TABLE_PANEL_CUSTOMERS . "`";
$adminsession = '0';
} else {
$stmt = Database::prepare("
SELECT `loginname` AS `admin` FROM `" . TABLE_PANEL_ADMINS . "`
WHERE `loginname`= :loginname
");
Database::pexecute($stmt, [
"loginname" => $loginname
]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row && $row['admin'] == $loginname) {
$table = "`" . TABLE_PANEL_ADMINS . "`";
$adminsession = '1';
} else {
throw new Exception("Unknown user '" . $loginname . "'");
}
}
$userinfo_stmt = Database::prepare("
SELECT * FROM $table
WHERE `loginname`= :loginname
");
Database::pexecute($userinfo_stmt, [
"loginname" => $loginname
]);
$userinfo = $userinfo_stmt->fetch(PDO::FETCH_ASSOC);
$userinfo['adminsession'] = $adminsession;
if ($userinfo['deactivated']) {
throw new Exception("User '" . $loginname . "' is currently deactivated");
}
return $userinfo;
}
}