mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
fix endpoint and improve frontend performance
This commit is contained in:
@@ -4,6 +4,7 @@ import { apiRequest } from "@app/config/request";
|
|||||||
|
|
||||||
import { TPamResourceOption } from "./types/resource-options";
|
import { TPamResourceOption } from "./types/resource-options";
|
||||||
import { TPamAccount, TPamFolder, TPamResource, TPamSession } from "./types";
|
import { TPamAccount, TPamFolder, TPamResource, TPamSession } from "./types";
|
||||||
|
import { PamResourceType } from "./enums";
|
||||||
|
|
||||||
export const pamKeys = {
|
export const pamKeys = {
|
||||||
all: ["pam"] as const,
|
all: ["pam"] as const,
|
||||||
@@ -70,22 +71,23 @@ export const useListPamResources = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const useGetPamResourceById = (
|
export const useGetPamResourceById = (
|
||||||
|
resourceType?: PamResourceType,
|
||||||
resourceId?: string,
|
resourceId?: string,
|
||||||
options?: Omit<
|
options?: Omit<
|
||||||
UseQueryOptions<TPamResource, unknown, TPamResource, ReturnType<typeof pamKeys.getResource>>,
|
UseQueryOptions<TPamResource, unknown, TPamResource, ReturnType<typeof pamKeys.getResource>>,
|
||||||
"queryKey" | "queryFn" | "enabled"
|
"queryKey" | "queryFn"
|
||||||
>
|
>
|
||||||
) => {
|
) => {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: pamKeys.getResource(resourceId || ""),
|
queryKey: pamKeys.getResource(resourceId || ""),
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const { data } = await apiRequest.get<{ resource: TPamResource }>(
|
const { data } = await apiRequest.get<{ resource: TPamResource }>(
|
||||||
`/api/v1/pam/resources/${resourceId}`
|
`/api/v1/pam/resources/${resourceType}/${resourceId}`
|
||||||
);
|
);
|
||||||
|
|
||||||
return data.resource;
|
return data.resource;
|
||||||
},
|
},
|
||||||
enabled: !!resourceId,
|
enabled: !!resourceId && !!resourceType && (options?.enabled ?? true),
|
||||||
...options
|
...options
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -65,7 +65,13 @@ const CreateForm = ({
|
|||||||
|
|
||||||
switch (resourceType) {
|
switch (resourceType) {
|
||||||
case PamResourceType.Postgres:
|
case PamResourceType.Postgres:
|
||||||
return <PostgresAccountForm onSubmit={onSubmit} resourceId={resourceId} />;
|
return (
|
||||||
|
<PostgresAccountForm
|
||||||
|
onSubmit={onSubmit}
|
||||||
|
resourceId={resourceId}
|
||||||
|
resourceType={resourceType}
|
||||||
|
/>
|
||||||
|
);
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unhandled resource: ${resourceType}`);
|
throw new Error(`Unhandled resource: ${resourceType}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod";
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { Button, ModalClose } from "@app/components/v2";
|
import { Button, ModalClose } from "@app/components/v2";
|
||||||
import { TPostgresAccount, useGetPamResourceById } from "@app/hooks/api/pam";
|
import { PamResourceType, TPostgresAccount, useGetPamResourceById } from "@app/hooks/api/pam";
|
||||||
|
|
||||||
import { BaseSqlAccountSchema } from "./shared/sql-account-schemas";
|
import { BaseSqlAccountSchema } from "./shared/sql-account-schemas";
|
||||||
import { SqlAccountFields } from "./shared/SqlAccountFields";
|
import { SqlAccountFields } from "./shared/SqlAccountFields";
|
||||||
@@ -14,6 +14,7 @@ import { RotateAccountFields, rotateAccountFieldsSchema } from "./RotateAccountF
|
|||||||
type Props = {
|
type Props = {
|
||||||
account?: TPostgresAccount;
|
account?: TPostgresAccount;
|
||||||
resourceId?: string;
|
resourceId?: string;
|
||||||
|
resourceType?: PamResourceType;
|
||||||
onSubmit: (formData: FormData) => Promise<void>;
|
onSubmit: (formData: FormData) => Promise<void>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ const formSchema = genericAccountFieldsSchema.extend(rotateAccountFieldsSchema.s
|
|||||||
|
|
||||||
type FormData = z.infer<typeof formSchema>;
|
type FormData = z.infer<typeof formSchema>;
|
||||||
|
|
||||||
export const PostgresAccountForm = ({ account, resourceId, onSubmit }: Props) => {
|
export const PostgresAccountForm = ({ account, resourceId, resourceType, onSubmit }: Props) => {
|
||||||
const isUpdate = Boolean(account);
|
const isUpdate = Boolean(account);
|
||||||
|
|
||||||
const form = useForm<FormData>({
|
const form = useForm<FormData>({
|
||||||
@@ -46,7 +47,9 @@ export const PostgresAccountForm = ({ account, resourceId, onSubmit }: Props) =>
|
|||||||
|
|
||||||
const [rotationCredentialsConfigured, setRotationCredentialsConfigured] = useState(false);
|
const [rotationCredentialsConfigured, setRotationCredentialsConfigured] = useState(false);
|
||||||
|
|
||||||
const { data: resource } = useGetPamResourceById(resourceId);
|
const { data: resource } = useGetPamResourceById(resourceType, resourceId, {
|
||||||
|
enabled: !account && !!resourceId && !!resourceType
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (account) {
|
if (account) {
|
||||||
|
|||||||
Reference in New Issue
Block a user