diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 5fa0fb4..a2bc009 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -12,6 +12,7 @@ use App\Models\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Arr; +use Illuminate\Validation\Rule; use Inertia\Inertia; use Inertia\Response; @@ -44,6 +45,7 @@ class ProjectController extends Controller return Inertia::render('projects/Index', [ 'projects' => $projectQuery ->get(), + 'status' => session('status'), ]); } @@ -76,6 +78,14 @@ class ProjectController extends Controller ]); } + public function general(Request $request, Project $project): Response + { + return Inertia::render('projects/settings/General', [ + 'project' => $project, + 'status' => session('status'), + ]); + } + public function access(Request $request, Project $project): Response { $user = $request->user(); @@ -146,4 +156,24 @@ class ProjectController extends Controller return to_route('projects.access', $project) ->with('status', "{$team->name} permissions were updated."); } + + public function destroy(Request $request, Project $project): RedirectResponse + { + $request->validate([ + 'confirmation_key' => [ + 'required', + 'string', + Rule::in([$project->key]), + ], + ], [ + 'confirmation_key.in' => 'Enter the exact project key to confirm deletion.', + ]); + + $projectName = $project->name; + + $project->delete(); + + return to_route('projects.index') + ->with('status', "Project {$projectName} was deleted."); + } } diff --git a/resources/js/pages/projects/Access.vue b/resources/js/pages/projects/Access.vue index 18e675a..69864fc 100644 --- a/resources/js/pages/projects/Access.vue +++ b/resources/js/pages/projects/Access.vue @@ -13,6 +13,7 @@ import { } from '@/components/ui/card'; import AppLayout from '@/layouts/AppLayout.vue'; import { access, index, show } from '@/routes/projects/index'; +import { general as generalSettings } from '@/routes/projects/settings'; import type { BreadcrumbItem, ProjectAccessPageProps } from '@/types'; const props = defineProps(); @@ -57,9 +58,21 @@ const hasPermission = ( /> - +
+ + + +
+
+ {{ status }} +
+
+ +
+ +
+ +
+ +