diff --git a/webui/src/components/apikeys/CreateApiKeyDialog.tsx b/webui/src/components/apikeys/CreateApiKeyDialog.tsx index 5c59ba3..06e2d78 100644 --- a/webui/src/components/apikeys/CreateApiKeyDialog.tsx +++ b/webui/src/components/apikeys/CreateApiKeyDialog.tsx @@ -8,9 +8,9 @@ import { Checkbox } from "@/components/ui/checkbox"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Loader2 } from "lucide-react"; import { apiKeysApi } from "@/lib/api"; -import { CreateKeyRequest, PermissionMode, InstancePermission } from "@/types/apiKey"; +import { PermissionMode, type CreateKeyRequest } from "@/types/apiKey"; import { useInstances } from "@/contexts/InstancesContext"; -import { format, addDays } from "date-fns"; +import { format } from "date-fns"; interface CreateApiKeyDialogProps { open: boolean; @@ -61,22 +61,19 @@ function CreateApiKeyDialog({ open, onOpenChange, onKeyCreated }: CreateApiKeyDi } // Build request - const permissions: InstancePermission[] = []; + const instanceIds: number[] = []; if (permissionMode === PermissionMode.PerInstance) { - Object.entries(instancePermissions).forEach(([instanceId, canInfer]) => { - if (canInfer) { - permissions.push({ - InstanceID: parseInt(instanceId), - CanInfer: true, - }); + Object.entries(instancePermissions).forEach(([instanceId, hasPermission]) => { + if (hasPermission) { + instanceIds.push(parseInt(instanceId)); } }); } const request: CreateKeyRequest = { - Name: name.trim(), - PermissionMode: permissionMode, - InstancePermissions: permissions, + name: name.trim(), + permission_mode: permissionMode, + instance_ids: instanceIds, }; // Add expiration if provided @@ -87,7 +84,7 @@ function CreateApiKeyDialog({ open, onOpenChange, onKeyCreated }: CreateApiKeyDi setError("Expiration date must be in the future"); return; } - request.ExpiresAt = Math.floor(expirationDate.getTime() / 1000); + request.expires_at = Math.floor(expirationDate.getTime() / 1000); } setLoading(true); @@ -107,10 +104,10 @@ function CreateApiKeyDialog({ open, onOpenChange, onKeyCreated }: CreateApiKeyDi }; const handleInstancePermissionChange = (instanceId: number, checked: boolean) => { - setInstancePermissions({ - ...instancePermissions, + setInstancePermissions(prev => ({ + ...prev, [instanceId]: checked, - }); + })); }; return ( @@ -172,25 +169,30 @@ function CreateApiKeyDialog({ open, onOpenChange, onKeyCreated }: CreateApiKeyDi

No instances available

) : (
- {instances.map((instance) => ( -
- - handleInstancePermissionChange(instance.id, checked as boolean) - } - disabled={loading} - /> -
+ ); + })}
)} diff --git a/webui/src/components/settings/ApiKeysSection.tsx b/webui/src/components/settings/ApiKeysSection.tsx index 806060a..b70683a 100644 --- a/webui/src/components/settings/ApiKeysSection.tsx +++ b/webui/src/components/settings/ApiKeysSection.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState, Fragment } from "react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Alert, AlertDescription } from "@/components/ui/alert"; @@ -175,9 +175,8 @@ function ApiKeysSection() { {keys.map((key) => ( - <> + handleRowClick(key)} > @@ -236,25 +235,15 @@ function ApiKeysSection() {

Loading permissions...

) : permissions[key.id] ? (
-

Instance Permissions:

- - - - - - - - - {permissions[key.id].map((perm) => ( - - - - - ))} - -
Instance NameCan Infer
{perm.instance_name} - -
+

Allowed Instances:

+
) : (

No permissions data

@@ -262,7 +251,7 @@ function ApiKeysSection() { )} - +
))}