- Slim 4 + php-di контейнер с маршрутизацией - Docker Compose: app (PHP 8.3-FPM) + web (nginx) + db (MariaDB) - Phinx миграция: таблица users (uuid, username, password_hash) - Auth: login/logout с сессиями - Setup: создание первого пользователя - Dashboard с layout (Bootstrap 5.3) - CLI: bin/console, bin/run-scan-worker.php - Smoke test: scripts/check.sh - README.md, PLAN.md
72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php ob_start(); ?>
|
|
<h2>Dashboard</h2>
|
|
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<div class="card text-white bg-primary">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Устройства</h5>
|
|
<p class="card-text display-6">0</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card text-white bg-success">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Сервисы</h5>
|
|
<p class="card-text display-6">0</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card text-white bg-info">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Новые находки</h5>
|
|
<p class="card-text display-6">0</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card text-white bg-warning">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Требуют внимания</h5>
|
|
<p class="card-text display-6">0</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
Последние найденные хосты
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="text-muted">Нет данных. Запустите сканирование сети.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
Последние события
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="text-muted">Нет событий.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header">
|
|
Последний скан сети
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="text-muted">Сканирование ещё не запускалось.</p>
|
|
</div>
|
|
</div>
|
|
<?php $content = ob_get_clean(); ?>
|
|
<?php require dirname(__DIR__) . '/layout.php'; ?>
|