user()->id) ->where('workspace_id', $request->user()->currentWorkspace->id) ->where('revoked', false) ->latest() ->get(); return ApiKeyResource::collection($tokens); } public function store(StoreApiKeyRequest $request): JsonResponse { $workspace = $request->user()->currentWorkspace; $validated = $request->validated(); $result = $request->user()->createToken($validated['name']); $token = AccessToken::find($result->token->id); $token->forceFill([ 'workspace_id' => $workspace->id, 'expires_at' => $validated['expires_at'] ?? null, ])->saveQuietly(); return response()->json([ 'token' => new ApiKeyResource($token->refresh()), 'plain_token' => $result->accessToken, ], Response::HTTP_CREATED); } public function destroy(Request $request, string $tokenId): JsonResponse { $token = AccessToken::where('id', $tokenId) ->where('user_id', $request->user()->id) ->where('workspace_id', $request->user()->currentWorkspace->id) ->first(); if (! $token) { abort(Response::HTTP_NOT_FOUND); } $token->forceFill(['revoked' => true])->saveQuietly(); return response()->json(null, Response::HTTP_NO_CONTENT); } }