scripts/create-user.php setzt SSH/CLI-Zugriff voraus, den viele Shared-Hosting-Pakete nicht haben. setup-user.php ist die web-erreichbare Alternative (Geheimnis in config.php, per curl von lokal aufrufbar), muss nach Gebrauch aber wieder vom Server gelöscht werden — sonst bleibt ein Endpunkt zum Anlegen beliebiger Nutzer erreichbar.
50 lines
1.8 KiB
PHP
50 lines
1.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
// Web-erreichbare Alternative zu scripts/create-user.php, für Hosting ohne PHP-CLI/SSH-Zugriff.
|
|
// Durch ein Geheimnis aus config.php geschützt (setup_secret) — WICHTIG: diese Datei nach dem
|
|
// Anlegen der benötigten Nutzer wieder vom Server löschen, siehe README.md.
|
|
|
|
require_once __DIR__ . '/db.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
$config = require __DIR__ . '/config.php';
|
|
$secret = $config['setup_secret'] ?? null;
|
|
|
|
if (!is_string($secret) || $secret === '' || $secret === 'CHANGE_ME') {
|
|
ai_backend_fail(500, 'setup_secret ist in config.php nicht (sicher) gesetzt.');
|
|
}
|
|
|
|
$body = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
|
|
if (!hash_equals($secret, (string) ($body['secret'] ?? ''))) {
|
|
ai_backend_fail(403, 'Falsches oder fehlendes Geheimnis.');
|
|
}
|
|
|
|
$username = trim((string) ($body['username'] ?? ''));
|
|
$password = (string) ($body['password'] ?? '');
|
|
$balance = isset($body['balanceUsd']) ? (float) $body['balanceUsd'] : 0.0;
|
|
|
|
if ($username === '' || $password === '') {
|
|
ai_backend_fail(400, 'username und password erforderlich.');
|
|
}
|
|
|
|
$pdo = ai_backend_db($config);
|
|
$hash = password_hash($password, PASSWORD_DEFAULT);
|
|
|
|
// Erneuter Aufruf mit demselben Benutzernamen aktualisiert Passwort/Guthaben, statt einen Fehler
|
|
// zu werfen — praktisch, falls beim ersten Versuch z.B. das Guthaben vergessen wurde.
|
|
$stmt = $pdo->prepare(
|
|
'INSERT INTO users (username, password_hash, balance_usd) VALUES (?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE password_hash = VALUES(password_hash), balance_usd = VALUES(balance_usd)'
|
|
);
|
|
$stmt->execute([$username, $hash, $balance]);
|
|
|
|
echo json_encode([
|
|
'ok' => true,
|
|
'username' => $username,
|
|
'balanceUsd' => $balance,
|
|
'hinweis' => 'Nutzer angelegt/aktualisiert. Diese Datei (setup-user.php) jetzt vom Server löschen.',
|
|
]);
|