mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-16 06:45:28 +00:00
77 lines
2.6 KiB
TypeScript
77 lines
2.6 KiB
TypeScript
import { z } from "zod";
|
|
|
|
import { AppConnections } from "@app/lib/api-docs";
|
|
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
|
|
import {
|
|
BaseAppConnectionSchema,
|
|
GenericCreateAppConnectionFieldsSchema,
|
|
GenericUpdateAppConnectionFieldsSchema
|
|
} from "@app/services/app-connection/app-connection-schemas";
|
|
|
|
import { AzureKeyVaultConnectionMethod } from "./azure-key-vault-connection-enums";
|
|
|
|
export const AzureKeyVaultConnectionOAuthInputCredentialsSchema = z.object({
|
|
code: z.string().trim().min(1, "OAuth code required"),
|
|
tenantId: z.string().trim().optional()
|
|
});
|
|
|
|
export const AzureKeyVaultConnectionOAuthOutputCredentialsSchema = z.object({
|
|
tenantId: z.string().optional(),
|
|
accessToken: z.string(),
|
|
refreshToken: z.string(),
|
|
expiresAt: z.number()
|
|
});
|
|
|
|
export const ValidateAzureKeyVaultConnectionCredentialsSchema = z.discriminatedUnion("method", [
|
|
z.object({
|
|
method: z
|
|
.literal(AzureKeyVaultConnectionMethod.OAuth)
|
|
.describe(AppConnections.CREATE(AppConnection.AzureKeyVault).method),
|
|
credentials: AzureKeyVaultConnectionOAuthInputCredentialsSchema.describe(
|
|
AppConnections.CREATE(AppConnection.AzureKeyVault).credentials
|
|
)
|
|
})
|
|
]);
|
|
|
|
export const CreateAzureKeyVaultConnectionSchema = ValidateAzureKeyVaultConnectionCredentialsSchema.and(
|
|
GenericCreateAppConnectionFieldsSchema(AppConnection.AzureKeyVault)
|
|
);
|
|
|
|
export const UpdateAzureKeyVaultConnectionSchema = z
|
|
.object({
|
|
credentials: AzureKeyVaultConnectionOAuthInputCredentialsSchema.optional().describe(
|
|
AppConnections.UPDATE(AppConnection.AzureKeyVault).credentials
|
|
)
|
|
})
|
|
.and(GenericUpdateAppConnectionFieldsSchema(AppConnection.AzureKeyVault));
|
|
|
|
const BaseAzureKeyVaultConnectionSchema = BaseAppConnectionSchema.extend({
|
|
app: z.literal(AppConnection.AzureKeyVault)
|
|
});
|
|
|
|
export const AzureKeyVaultConnectionSchema = z.intersection(
|
|
BaseAzureKeyVaultConnectionSchema,
|
|
z.discriminatedUnion("method", [
|
|
z.object({
|
|
method: z.literal(AzureKeyVaultConnectionMethod.OAuth),
|
|
credentials: AzureKeyVaultConnectionOAuthOutputCredentialsSchema
|
|
})
|
|
])
|
|
);
|
|
|
|
export const SanitizedAzureKeyVaultConnectionSchema = z.discriminatedUnion("method", [
|
|
BaseAzureKeyVaultConnectionSchema.extend({
|
|
method: z.literal(AzureKeyVaultConnectionMethod.OAuth),
|
|
credentials: AzureKeyVaultConnectionOAuthOutputCredentialsSchema.pick({
|
|
tenantId: true
|
|
})
|
|
})
|
|
]);
|
|
|
|
export const AzureKeyVaultConnectionListItemSchema = z.object({
|
|
name: z.literal("Azure Key Vault"),
|
|
app: z.literal(AppConnection.AzureKeyVault),
|
|
methods: z.nativeEnum(AzureKeyVaultConnectionMethod).array(),
|
|
oauthClientId: z.string().optional()
|
|
});
|