user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $validated = $request->validated(); $section = ProjectSettingsSection::from( (string) Arr::get($validated, 'section', ProjectSettingsSection::General->value), ); return Inertia::render( 'projects/Settings', $this->buildProjectSettingsPayload->handle( $project, $user, $section, session('status'), session('error'), ), ); } public function general(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::General); } public function board(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::Board); } public function metadata(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::Metadata); } public function repositories(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::Repositories); } public function notifications(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::Notifications); } public function access(Request $request, Project $project): RedirectResponse { return $this->redirectToSection($request, $project, ProjectSettingsSection::Access); } private function redirectToSection( Request $request, Project $project, ProjectSettingsSection $section, ): RedirectResponse { abort_unless( $this->permissionService->allows($request->user(), Permission::ProjectAdmin, $project), 403, ); return to_route('projects.settings.index', [ 'project' => $project, 'section' => $section->value, ]); } }