user()->currentWorkspace; if (! $workspace) { return redirect()->route('app.workspaces.create'); } $this->authorize('view', $workspace); return Inertia::render('settings/ApiKeys', [ 'workspace' => $workspace, 'apiTokens' => $workspace->apiTokens()->latest()->get(), ]); } public function store(Request $request): RedirectResponse { $workspace = $request->user()->currentWorkspace; if (! $workspace) { return redirect()->route('app.workspaces.create'); } $this->authorize('view', $workspace); $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'expires_at' => ['nullable', 'date', 'after:today'], ]); $result = CreateApiKey::execute($workspace, $validated); session()->flash('flash.banner', __('settings.api_keys.flash.created')); session()->flash('flash.bannerStyle', 'success'); session()->flash('flash.plainToken', data_get($result, 'plain_token')); return back(); } public function destroy(Request $request, ApiToken $apiToken): RedirectResponse { $workspace = $request->user()->currentWorkspace; if (! $workspace) { return redirect()->route('app.workspaces.create'); } $this->authorize('view', $workspace); if ($apiToken->workspace_id !== $workspace->id) { abort(404); } DeleteApiKey::execute($apiToken); session()->flash('flash.banner', __('settings.api_keys.flash.deleted')); session()->flash('flash.bannerStyle', 'success'); return back(); } }