philippurbschat.de/home/bin/admin.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','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;
}