Files
2026-06-04 19:19:35 +03:00

52 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Repositories\AdminRepository;
require_once dirname(__DIR__, 2) . '/app/bootstrap.php';
$repository = new AdminRepository();
$isLocal = app_env('APP_ENV', 'production') === 'local';
$expectedToken = (string) app_env('INSTALL_TOKEN', '');
$actualToken = (string) ($_GET['token'] ?? $_POST['token'] ?? '');
$canRun = $isLocal && $expectedToken !== '' && hash_equals($expectedToken, $actualToken);
$hasAdmin = $repository->activeCount() > 0;
$message = null;
$error = null;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!$canRun || $hasAdmin) {
http_response_code(403);
$error = 'Создание администратора недоступно.';
} else {
try {
$repository->createOwner(
(string) ($_POST['name'] ?? ''),
(string) ($_POST['email'] ?? ''),
(string) ($_POST['password'] ?? '')
);
$message = 'Администратор создан. Теперь можно войти.';
$hasAdmin = true;
} catch (Throwable $exception) {
$error = app_env('APP_DEBUG', 'false') === 'true'
? $exception->getMessage()
: 'Не удалось создать администратора.';
}
}
}
view('admin/setup', [
'title' => 'Создание администратора - Рыбсток',
'breadcrumbs' => [
['title' => 'Главная', 'url' => '/'],
['title' => 'Админка', 'url' => '/admin/'],
['title' => 'Создание администратора'],
],
'canRun' => $canRun,
'hasAdmin' => $hasAdmin,
'token' => $actualToken,
'message' => $message,
'error' => $error,
]);