92 lines
3.3 KiB
PHP
92 lines
3.3 KiB
PHP
<?php
|
|
// CLI Tool: php home/bin/admin.php
|
|
if (php_sapi_name() !== 'cli') {
|
|
die("This tool can only be run via CLI.\n");
|
|
}
|
|
|
|
require_once __DIR__ . '/../app/init.php';
|
|
|
|
$action = $argv[1] ?? 'help';
|
|
|
|
switch ($action) {
|
|
case 'set-admin':
|
|
$email = trim(strtolower($argv[2] ?? 'hi@philippurbschat.de'));
|
|
$password = $argv[3] ?? null;
|
|
$name = $argv[4] ?? 'Philipp';
|
|
|
|
$db = new Database();
|
|
$db->query("SELECT * FROM home_users WHERE email = :email");
|
|
$db->bind(':email', $email);
|
|
$existing = $db->single();
|
|
|
|
$userModel = new User();
|
|
|
|
if ($existing) {
|
|
$data = [
|
|
'name' => $existing['name'] ?: $name,
|
|
'email' => $email,
|
|
'is_admin' => 1,
|
|
'status' => 'Active',
|
|
'projects' => ModuleService::getAll() ? array_keys(ModuleService::getAll()) : ['dinos','plants','storymachine','cooles-feature','admin-tools','test']
|
|
];
|
|
if (!empty($password)) {
|
|
$data['password'] = $password;
|
|
}
|
|
$userModel->save($data, $existing['id']);
|
|
echo "✓ Admin-Rechte für {$email} erfolgreich aktualisiert (ID: {$existing['id']})!\n";
|
|
} else {
|
|
if (empty($password)) {
|
|
$password = bin2hex(random_bytes(6));
|
|
echo "Hinweis: Zufälliges Initial-Passwort generiert: {$password}\n";
|
|
}
|
|
$data = [
|
|
'name' => $name,
|
|
'email' => $email,
|
|
'password' => $password,
|
|
'is_admin' => 1,
|
|
'status' => 'Active',
|
|
'projects' => array_keys(ModuleService::getAll())
|
|
];
|
|
$userModel->save($data);
|
|
echo "✓ Neuer Admin-Benutzer {$email} erfolgreich angelegt!\n";
|
|
}
|
|
break;
|
|
|
|
case 'list-users':
|
|
$userModel = new User();
|
|
$users = $userModel->getAll();
|
|
echo sprintf("%-4s | %-15s | %-28s | %-6s | %-8s | %s\n", "ID", "Name", "E-Mail", "Admin", "Status", "Module");
|
|
echo str_repeat("-", 80) . "\n";
|
|
foreach ($users as $u) {
|
|
echo sprintf(
|
|
"%-4s | %-15s | %-28s | %-6s | %-8s | %s\n",
|
|
$u['id'],
|
|
substr($u['name'], 0, 15),
|
|
substr($u['email'], 0, 28),
|
|
$u['is_admin'] ? 'YES' : 'no',
|
|
$u['status'],
|
|
implode(',', $u['projects'] ?? [])
|
|
);
|
|
}
|
|
break;
|
|
|
|
case 'create-invite':
|
|
$note = $argv[2] ?? 'CLI-Generated';
|
|
$projects = isset($argv[3]) ? explode(',', $argv[3]) : array_keys(ModuleService::getAll());
|
|
$invModel = new Invitation();
|
|
$token = $invModel->create($projects, $note, 1, null);
|
|
$baseUrl = rtrim(Config::get('BASE_URL', 'https://philippurbschat.de/'), '/');
|
|
echo "✓ Einladungslink generiert:\n";
|
|
echo " URL: {$baseUrl}/register?token={$token}\n";
|
|
echo " Module: " . implode(', ', $projects) . "\n";
|
|
break;
|
|
|
|
case 'help':
|
|
default:
|
|
echo "PhilCore CLI Admin Tool\n";
|
|
echo "Verwendung:\n";
|
|
echo " php home/bin/admin.php set-admin [email] [password] [name]\n";
|
|
echo " php home/bin/admin.php list-users\n";
|
|
echo " php home/bin/admin.php create-invite [notiz] [projekte,kommasepariert]\n";
|
|
break;
|
|
}
|