authorize('viewAny', Script::class); return Inertia::render('scripts/index', [ 'scripts' => ScriptResource::collection(user()->scripts()->simplePaginate(config('web.pagination_size'))), ]); } #[Get('/json', name: 'scripts.json')] public function json(): ResourceCollection { $this->authorize('viewAny', Script::class); return ScriptResource::collection(user()->scripts()->get()); } #[Get('/{script}', name: 'scripts.show')] public function show(Script $script): Response { $this->authorize('view', $script); return Inertia::render('scripts/show', [ 'script' => new ScriptResource($script), 'executions' => ScriptExecutionResource::collection( $script->executions()->latest()->simplePaginate(config('web.pagination_size')) ), ]); } #[Post('/', name: 'scripts.store')] public function store(Request $request): RedirectResponse { $this->authorize('create', Script::class); app(CreateScript::class)->create(user(), $request->input()); return back()->with('success', 'Script created.'); } #[Put('/{script}', name: 'scripts.update')] public function update(Script $script, Request $request): RedirectResponse { $this->authorize('update', $script); app(EditScript::class)->edit($script, user(), $request->input()); return back()->with('success', 'Script updated.'); } #[Delete('/{script}', name: 'scripts.destroy')] public function destroy(Script $script): RedirectResponse { $this->authorize('delete', $script); $script->delete(); return back()->with('success', 'Script deleted.'); } #[Post('/{script}/execute', name: 'scripts.execute')] public function execute(Request $request, Script $script): RedirectResponse { app(ExecuteScript::class)->execute($script, user(), $request->input()); return redirect()->route('scripts.show', $script)->with('info', 'Script is being executed.'); } }