шаг 5 завершен
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?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,
|
||||
]);
|
||||
Reference in New Issue
Block a user