$plugins, ]); } #[Post('/install', name: 'plugins.install')] public function install(Request $request): RedirectResponse { if (config('app.demo')) { return back()->with('error', 'Plugins are disabled in demo mode.'); } $this->validate($request, [ 'url' => 'required|url', ]); if (! composer_path() || ! php_path()) { return back()->with('error', 'Use CLI to install plugins.'); } $url = $request->input('url'); dispatch(function () use ($url) { try { Plugins::install($url); } catch (Throwable $e) { // } Plugins::cleanup(); })->onQueue('default'); return back()->with('info', 'Plugin is being installed...'); } #[Delete('/uninstall', name: 'plugins.uninstall')] public function uninstall(Request $request): RedirectResponse { if (config('app.demo')) { return back()->with('error', 'Plugins are disabled in demo mode.'); } $this->validate($request, [ 'name' => 'required|string', ]); if (! composer_path() || ! php_path()) { return back()->with('error', 'Use CLI to uninstall plugins.'); } $name = $request->input('name'); dispatch(function () use ($name) { try { Plugins::uninstall($name); } catch (Throwable) { // } Plugins::cleanup(); })->onQueue('default'); return back()->with('warning', 'Plugin is being uninstalled...'); } }