feat: group admin sidebar items into single Administration page with action cards
This commit is contained in:
@@ -96,10 +96,7 @@ $router->post('/terminal/:id/execute', [TerminalController::class, 'execute'], [
|
|||||||
$router->get('/terminal/:id/history', [TerminalController::class, 'history'], [AuthMiddleware::class]);
|
$router->get('/terminal/:id/history', [TerminalController::class, 'history'], [AuthMiddleware::class]);
|
||||||
$router->post('/terminal/:id/clear-history', [TerminalController::class, 'clearHistory'], [AuthMiddleware::class, CSRFMiddleware::class]);
|
$router->post('/terminal/:id/clear-history', [TerminalController::class, 'clearHistory'], [AuthMiddleware::class, CSRFMiddleware::class]);
|
||||||
|
|
||||||
$router->get('/admin', function () {
|
$router->get('/admin', [AdminController::class, 'index'], [AuthMiddleware::class, RoleMiddleware::class]);
|
||||||
$view = \ServerManager\Core\App::getInstance()->getView();
|
|
||||||
$view->redirect('/admin/audit');
|
|
||||||
}, [AuthMiddleware::class, RoleMiddleware::class]);
|
|
||||||
|
|
||||||
$router->get('/admin/activity', function () {
|
$router->get('/admin/activity', function () {
|
||||||
$view = \ServerManager\Core\App::getInstance()->getView();
|
$view = \ServerManager\Core\App::getInstance()->getView();
|
||||||
|
|||||||
@@ -37,6 +37,13 @@ class AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function index(): void
|
||||||
|
{
|
||||||
|
$this->view->display('admin.index', [
|
||||||
|
'title' => 'Administration - ServerManager',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function users(): void
|
public function users(): void
|
||||||
{
|
{
|
||||||
$this->requireSuperAdmin();
|
$this->requireSuperAdmin();
|
||||||
|
|||||||
35
views/admin/index.php
Normal file
35
views/admin/index.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<div class="page-header">
|
||||||
|
<h1 class="page-title">Administration</h1>
|
||||||
|
<p class="page-subtitle">Manage system settings and configurations</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="action-grid">
|
||||||
|
<a href="/teams" class="action-card">
|
||||||
|
<i class="fas fa-users-cog"></i>
|
||||||
|
<span>Teams</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/users" class="action-card">
|
||||||
|
<i class="fas fa-users"></i>
|
||||||
|
<span>Users</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/audit" class="action-card">
|
||||||
|
<i class="fas fa-history"></i>
|
||||||
|
<span>Audit Logs</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/security" class="action-card">
|
||||||
|
<i class="fas fa-shield-alt"></i>
|
||||||
|
<span>Security</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/app-version" class="action-card">
|
||||||
|
<i class="fas fa-mobile-alt"></i>
|
||||||
|
<span>App Version</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/notifications" class="action-card">
|
||||||
|
<i class="fas fa-bell"></i>
|
||||||
|
<span>Notifications</span>
|
||||||
|
</a>
|
||||||
|
<a href="/admin/policies" class="action-card">
|
||||||
|
<i class="fas fa-file-contract"></i>
|
||||||
|
<span>Policies</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
@@ -67,39 +67,9 @@ if (!isset($user) || $user === null) {
|
|||||||
<hr class="nav-divider">
|
<hr class="nav-divider">
|
||||||
<div class="nav-section">Administration</div>
|
<div class="nav-section">Administration</div>
|
||||||
|
|
||||||
<a href="/teams" class="nav-item <?= str_starts_with($currentRoute, '/teams') ? 'active' : '' ?>">
|
<a href="/admin" class="nav-item <?= str_starts_with($currentRoute, '/admin') ? 'active' : '' ?>">
|
||||||
<i class="fas fa-users-cog"></i>
|
<i class="fas fa-cog"></i>
|
||||||
<span>Teams</span>
|
<span>Administration</span>
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/users" class="nav-item <?= str_starts_with($currentRoute, '/admin/users') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-users"></i>
|
|
||||||
<span>Users</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/audit" class="nav-item <?= str_starts_with($currentRoute, '/admin/audit') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-history"></i>
|
|
||||||
<span>Audit Logs</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/security" class="nav-item <?= str_starts_with($currentRoute, '/admin/security') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-shield-alt"></i>
|
|
||||||
<span>Security</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/app-version" class="nav-item <?= str_starts_with($currentRoute, '/admin/app-version') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-mobile-alt"></i>
|
|
||||||
<span>App Version</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/notifications" class="nav-item <?= str_starts_with($currentRoute, '/admin/notifications') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-bell"></i>
|
|
||||||
<span>Notifications</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/admin/policies" class="nav-item <?= str_starts_with($currentRoute, '/admin/policies') ? 'active' : '' ?>">
|
|
||||||
<i class="fas fa-file-contract"></i>
|
|
||||||
<span>Policies</span>
|
|
||||||
</a>
|
</a>
|
||||||
<?php elseif (is_admin()): ?>
|
<?php elseif (is_admin()): ?>
|
||||||
<hr class="nav-divider">
|
<hr class="nav-divider">
|
||||||
|
|||||||
Reference in New Issue
Block a user