view = new View(__DIR__ . '/views'); } public function index(): Response { if ($guard = $this->guard()) { return $guard; } Plugins::sync(); return new Response($this->view->render('admin/index.php', [ 'title' => 'Plugins', 'plugins' => Plugins::all(), ])); } public function toggle(): Response { if ($guard = $this->guard()) { return $guard; } $slug = trim((string)($_POST['slug'] ?? '')); $enabled = isset($_POST['enabled']) && $_POST['enabled'] === '1'; if ($slug !== '') { Plugins::toggle($slug, $enabled); } return new Response('', 302, ['Location' => '/admin/plugins']); } private function guard(): ?Response { if (!Auth::check()) { return new Response('', 302, ['Location' => '/admin/login']); } if (!Auth::hasRole(['admin'])) { return new Response('', 302, ['Location' => '/admin']); } return null; } }