From a9ddd6eb89f943311475715fb458ea410fa1065a Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 22 Oct 2025 03:08:22 +0800 Subject: [PATCH 01/38] feat: add dynamic secret kube auth vault migration --- .../routes/v3/external-migration-router.ts | 50 ++++ .../hc-vault/hc-vault-connection-fns.ts | 121 ++++++++++ .../hc-vault/hc-vault-connection-types.ts | 23 ++ .../external-migration-service.ts | 53 ++++- .../platform/external-migrations/vault.mdx | 47 ++++ .../import-vault-kubernetes-role-modal.png | Bin 0 -> 417789 bytes frontend/src/hooks/api/migration/queries.tsx | 35 ++- frontend/src/hooks/api/migration/types.ts | 21 ++ .../IdentityKubernetesAuthForm.tsx | 38 ++- .../components/ActionBar/ActionBar.tsx | 46 ++-- .../KubernetesInputForm.tsx | 126 +++++++++- .../VaultKubernetesImportModal.tsx | 223 ++++++++++++++++++ 12 files changed, 747 insertions(+), 36 deletions(-) create mode 100644 docs/images/platform/external-migrations/vault-in-platform/import-vault-kubernetes-role-modal.png create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VaultKubernetesImportModal.tsx diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index f0737e01d..367490c82 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -393,6 +393,56 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider } }); + server.route({ + method: "GET", + url: "/vault/kubernetes-roles", + config: { + rateLimit: readLimit + }, + schema: { + querystring: z.object({ + namespace: z.string(), + mountPath: z.string() + }), + response: { + 200: z.object({ + roles: z.array( + z.object({ + name: z.string(), + mountPath: z.string(), + allowed_kubernetes_namespaces: z.array(z.string()).nullish(), + allowed_kubernetes_namespace_selector: z.string().nullish(), + token_max_ttl: z.number().nullish(), + token_default_ttl: z.number().nullish(), + token_default_audiences: z.array(z.string()).nullish(), + service_account_name: z.string().nullish(), + kubernetes_role_name: z.string().nullish(), + kubernetes_role_type: z.string().nullish(), + generated_role_rules: z.string().nullish(), + name_template: z.string().nullish(), + extra_annotations: z.record(z.string()).nullish(), + extra_labels: z.record(z.string()).nullish(), + config: z.object({ + kubernetes_host: z.string(), + kubernetes_ca_cert: z.string().nullish() + }) + }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const roles = await server.services.migration.getVaultKubernetesRoles({ + actor: req.permission, + namespace: req.query.namespace, + mountPath: req.query.mountPath + }); + + return { roles }; + } + }); + server.route({ method: "GET", url: "/vault/secret-paths", diff --git a/backend/src/services/app-connection/hc-vault/hc-vault-connection-fns.ts b/backend/src/services/app-connection/hc-vault/hc-vault-connection-fns.ts index 38f97700c..9a6b95567 100644 --- a/backend/src/services/app-connection/hc-vault/hc-vault-connection-fns.ts +++ b/backend/src/services/app-connection/hc-vault/hc-vault-connection-fns.ts @@ -21,6 +21,8 @@ import { THCVaultKubernetesAuthConfig, THCVaultKubernetesAuthRole, THCVaultKubernetesAuthRoleWithConfig, + THCVaultKubernetesRole, + THCVaultKubernetesSecretsConfig, THCVaultMount, THCVaultMountResponse } from "./hc-vault-connection-types"; @@ -799,3 +801,122 @@ export const getHCVaultKubernetesAuthRoles = async ( }); } }; + +export const getHCVaultKubernetesRoles = async ( + namespace: string, + mountPath: string, + connection: THCVaultConnection, + gatewayService: Pick +): Promise => { + // Remove trailing slash from mount path + const cleanMountPath = mountPath.endsWith("/") ? mountPath.slice(0, -1) : mountPath; + + try { + const instanceUrl = await getHCVaultInstanceUrl(connection); + const accessToken = await getHCVaultAccessToken(connection, gatewayService); + // 1. Get the Kubernetes secrets engine configuration for this mount + const { data: configResponse } = await requestWithHCVaultGateway<{ data: THCVaultKubernetesSecretsConfig }>( + connection, + gatewayService, + { + url: `${instanceUrl}/v1/${cleanMountPath}/config`, + method: "GET", + headers: { + "X-Vault-Token": accessToken, + "X-Vault-Namespace": namespace + } + } + ); + + const kubernetesConfig = configResponse.data; + + // 2. List all roles in this mount + let roleNames: string[] = []; + try { + const { data: roleListResponse } = await requestWithHCVaultGateway<{ data: { keys: string[] } }>( + connection, + gatewayService, + { + url: `${instanceUrl}/v1/${cleanMountPath}/roles?list=true`, + method: "GET", + headers: { + "X-Vault-Token": accessToken, + "X-Vault-Namespace": namespace + } + } + ); + roleNames = roleListResponse.data.keys || []; + } catch (error) { + // Vault returns 404 when no roles are configured yet + if (error && typeof error === "object" && "response" in error) { + const axiosError = error as { response?: { status?: number } }; + if (axiosError.response?.status === 404) { + return []; + } + } + + throw error; + } + + if (!roleNames || roleNames.length === 0) { + return []; + } + + // 3. Fetch details for each role with concurrency control + const limiter = createConcurrencyLimiter(HC_VAULT_CONCURRENCY_LIMIT); + + const roleDetailsPromises = roleNames.map((roleName) => + limiter(async () => { + const { data: roleResponse } = await requestWithHCVaultGateway<{ + data: { + allowed_kubernetes_namespaces?: string[]; + allowed_kubernetes_namespace_selector?: string; + token_max_ttl?: number; + token_default_ttl?: number; + token_default_audiences?: string[]; + service_account_name?: string; + kubernetes_role_name?: string; + kubernetes_role_type?: string; + generated_role_rules?: string; + name_template?: string; + extra_annotations?: Record; + extra_labels?: Record; + }; + }>(connection, gatewayService, { + url: `${instanceUrl}/v1/${cleanMountPath}/roles/${roleName}`, + method: "GET", + headers: { + "X-Vault-Token": accessToken, + "X-Vault-Namespace": namespace + } + }); + + // 4. Merge the role with the config + return { + ...roleResponse.data, + name: roleName, + config: kubernetesConfig, + mountPath: cleanMountPath + } as THCVaultKubernetesRole; + }) + ); + + const roles = await Promise.all(roleDetailsPromises); + + return roles; + } catch (error: unknown) { + logger.error(error, "Unable to list HC Vault Kubernetes secrets engine roles"); + + if (error instanceof AxiosError) { + const errorMessage = + (error.response?.data as { errors?: string[] })?.errors?.[0] || error.message || "Unknown error"; + throw new BadRequestError({ + message: `Failed to list Kubernetes secrets engine roles: ${errorMessage}` + }); + } + + throw new BadRequestError({ + message: "Unable to list Kubernetes secrets engine roles from HashiCorp Vault" + }); + } +}; diff --git a/backend/src/services/app-connection/hc-vault/hc-vault-connection-types.ts b/backend/src/services/app-connection/hc-vault/hc-vault-connection-types.ts index d25dbc9e6..2b1956c84 100644 --- a/backend/src/services/app-connection/hc-vault/hc-vault-connection-types.ts +++ b/backend/src/services/app-connection/hc-vault/hc-vault-connection-types.ts @@ -95,3 +95,26 @@ export type THCVaultKubernetesAuthRoleWithConfig = THCVaultKubernetesAuthRole & config: THCVaultKubernetesAuthConfig; mountPath: string; }; + +export type THCVaultKubernetesSecretsConfig = { + kubernetes_host: string; + kubernetes_ca_cert?: string; +}; + +export type THCVaultKubernetesRole = { + name: string; + allowed_kubernetes_namespaces?: string[]; + allowed_kubernetes_namespace_selector?: string; + token_max_ttl?: number; + token_default_ttl?: number; + token_default_audiences?: string[]; + service_account_name?: string; + kubernetes_role_name?: string; + kubernetes_role_type?: string; + generated_role_rules?: string; + name_template?: string; + extra_annotations?: Record; + extra_labels?: Record; + config: THCVaultKubernetesSecretsConfig; + mountPath: string; +}; diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 4192ffcd5..6298a4932 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -18,6 +18,7 @@ import { TAppConnectionServiceFactory } from "../app-connection/app-connection-s import { getHCVaultAuthMounts, getHCVaultKubernetesAuthRoles, + getHCVaultKubernetesRoles, getHCVaultSecretsForPath, HCVaultAuthType, listHCVaultMounts, @@ -747,6 +748,55 @@ export const externalMigrationServiceFactory = ({ return roles; }; + const getVaultKubernetesRoles = async ({ + actor, + namespace, + mountPath + }: { + actor: OrgServiceActor; + namespace: string; + mountPath: string; + }) => { + const { hasRole } = await permissionService.getOrgPermission( + actor.type, + actor.id, + actor.orgId, + actor.authMethod, + actor.orgId + ); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can get Kubernetes roles" }); + } + + const vaultConfig = await vaultExternalMigrationConfigDAL.findOne({ + orgId: actor.orgId, + namespace + }); + + if (!vaultConfig) { + throw new NotFoundError({ message: "Vault migration config not found for this namespace" }); + } + + if (!vaultConfig.connection) { + throw new BadRequestError({ message: "Vault migration connection is not configured for this namespace" }); + } + + const credentials = await decryptAppConnectionCredentials({ + orgId: vaultConfig.orgId, + encryptedCredentials: vaultConfig.connection.encryptedCredentials, + kmsService, + projectId: null + }); + + const connection = { + ...vaultConfig.connection, + credentials + } as THCVaultConnection; + + return getHCVaultKubernetesRoles(namespace, mountPath, connection, gatewayService); + }; + return { importEnvKeyData, importVaultData, @@ -761,6 +811,7 @@ export const externalMigrationServiceFactory = ({ getVaultAuthMounts, getVaultSecretPaths, importVaultSecrets, - getVaultKubernetesAuthRoles + getVaultKubernetesAuthRoles, + getVaultKubernetesRoles }; }; diff --git a/docs/documentation/platform/external-migrations/vault.mdx b/docs/documentation/platform/external-migrations/vault.mdx index e267cc5e9..c58e1ea6b 100644 --- a/docs/documentation/platform/external-migrations/vault.mdx +++ b/docs/documentation/platform/external-migrations/vault.mdx @@ -26,6 +26,12 @@ Infisical provides two approaches for migrating from HashiCorp Vault. This migration approach lets you set up a connection to your Vault instance once, then import specific resources as needed throughout Infisical. + + **Organization Admin Access Required:** All in-platform migration features + (importing secrets, Kubernetes configurations, and policies from Vault) are + only accessible to organization admins. + + ### Step 1: Set Up Your Vault Connection @@ -84,6 +90,19 @@ This migration approach lets you set up a connection to your Vault instance once path "auth/+/role/*" { capabilities = ["read"] } + + # Kubernetes secrets engine - for reading secrets engine configuration and roles + path "+/config" { + capabilities = ["read"] + } + + path "+/roles" { + capabilities = ["list"] + } + + path "+/roles/*" { + capabilities = ["read"] + } ``` @@ -160,6 +179,34 @@ The authentication settings (service accounts, TTL, policies, etc.) will be auto must be manually provided in the form after importing the configuration. +#### Import Kubernetes Dynamic Secret Configurations + +When creating a Kubernetes dynamic secret, you can import the configuration from a Vault Kubernetes secrets engine role: + +1. Navigate to your project and select an environment +2. Click **"+ Add Secret"** dropdown and choose **"Dynamic Secret"** +3. Select **Kubernetes** as the provider +4. Click **"Load from Vault"** at the top of the form + + ![Load Kubernetes Dynamic Secret from Vault](/images/platform/external-migrations/vault-in-platform/import-vault-kubernetes-role-modal.png) + +5. Select your Vault namespace, Kubernetes secrets engine mount, and role +6. Click **"Load Configuration"** + +The form will be automatically populated with the role's configuration including: + +- Cluster URL and CA certificate +- Credential type (Static or Dynamic) +- Service account name or Kubernetes role settings +- Allowed namespaces +- Token TTL values +- Token audiences + + + Sensitive values like cluster tokens cannot be retrieved from Vault and must + be manually provided in the form after loading the configuration. + + #### Import and Translate Access Control Policies When configuring project role-based access control, you can import Vault HCL policies and automatically translate them to Infisical permissions. diff --git a/docs/images/platform/external-migrations/vault-in-platform/import-vault-kubernetes-role-modal.png b/docs/images/platform/external-migrations/vault-in-platform/import-vault-kubernetes-role-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb34563771b8caf23332ceaaa4477987c544211 GIT binary patch literal 417789 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

AodVcqFl)ah3$Ct6)(s#3(Q-fH_T|6!>m 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

nJQ(MZ@p0#pl14}STOvFGJgqS3$XnoH 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 literal 0 HcmV?d00001 diff --git a/frontend/src/hooks/api/migration/queries.tsx b/frontend/src/hooks/api/migration/queries.tsx index e4ce6824d..198bf887b 100644 --- a/frontend/src/hooks/api/migration/queries.tsx +++ b/frontend/src/hooks/api/migration/queries.tsx @@ -5,7 +5,8 @@ import { apiRequest } from "@app/config/request"; import { ExternalMigrationProviders, TVaultExternalMigrationConfig, - VaultKubernetesAuthRole + VaultKubernetesAuthRole, + VaultKubernetesRole } from "./types"; export const externalMigrationQueryKeys = { @@ -31,6 +32,11 @@ export const externalMigrationQueryKeys = { "vault-kubernetes-auth-roles", namespace, mountPath + ], + vaultKubernetesRoles: (namespace?: string, mountPath?: string) => [ + "vault-kubernetes-roles", + namespace, + mountPath ] }; @@ -172,3 +178,30 @@ export const useGetVaultKubernetesAuthRoles = ( enabled: enabled && !!namespace && !!mountPath }); }; + +export const useGetVaultKubernetesRoles = ( + enabled = true, + namespace?: string, + mountPath?: string +) => { + return useQuery({ + queryKey: externalMigrationQueryKeys.vaultKubernetesRoles(namespace, mountPath), + queryFn: async () => { + if (!namespace || !mountPath) { + throw new Error("Both namespace and mountPath are required"); + } + + const { data } = await apiRequest.get<{ + roles: VaultKubernetesRole[]; + }>("/api/v3/external-migration/vault/kubernetes-roles", { + params: { + namespace, + mountPath + } + }); + + return data.roles; + }, + enabled: enabled && !!namespace && !!mountPath + }); +}; diff --git a/frontend/src/hooks/api/migration/types.ts b/frontend/src/hooks/api/migration/types.ts index f4303ea26..4c101548c 100644 --- a/frontend/src/hooks/api/migration/types.ts +++ b/frontend/src/hooks/api/migration/types.ts @@ -49,3 +49,24 @@ export type VaultKubernetesAuthRole = { disable_local_ca_jwt?: boolean; }; }; + +export type VaultKubernetesRole = { + name: string; + mountPath: string; + allowed_kubernetes_namespaces?: string[]; + allowed_kubernetes_namespace_selector?: string; + token_max_ttl?: number; + token_default_ttl?: number; + token_default_audiences?: string[]; + service_account_name?: string; + kubernetes_role_name?: string; + kubernetes_role_type?: string; + generated_role_rules?: string; + name_template?: string; + extra_annotations?: Record; + extra_labels?: Record; + config: { + kubernetes_host: string; + kubernetes_ca_cert?: string; + }; +}; diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx index 3cfe1c355..9b8624990 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx @@ -22,11 +22,12 @@ import { TextArea, Tooltip } from "@app/components/v2"; -import { useOrganization, useSubscription } from "@app/context"; +import { useOrganization, useOrgPermission, useSubscription } from "@app/context"; import { OrgGatewayPermissionActions, OrgPermissionSubjects } from "@app/context/OrgPermissionContext/types"; +import { OrgMembershipRole } from "@app/helpers/roles"; import { gatewaysQueryKeys, useAddIdentityKubernetesAuth, @@ -129,6 +130,8 @@ export const IdentityKubernetesAuthForm = ({ ] as const); const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); + const { hasOrgRole } = useOrgPermission(); + const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const { control, @@ -409,20 +412,29 @@ export const IdentityKubernetesAuthForm = ({ Load values from HashiCorp Vault - + + )}

diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx index 182bb1d80..916b3818b 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx @@ -55,6 +55,7 @@ import { ProjectPermissionActions, ProjectPermissionDynamicSecretActions, ProjectPermissionSub, + useOrgPermission, useProject, useProjectPermission, useSubscription @@ -64,6 +65,7 @@ import { ProjectPermissionSecretActions, ProjectPermissionSecretRotationActions } from "@app/context/ProjectPermissionContext/types"; +import { OrgMembershipRole } from "@app/helpers/roles"; import { usePopUp } from "@app/hooks"; import { useCreateFolder, @@ -203,6 +205,8 @@ export const ActionBar = ({ const { permission } = useProjectPermission(); const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); + const { hasOrgRole } = useOrgPermission(); + const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const handleFolderCreate = async (folderName: string, description: string | null) => { try { @@ -1114,25 +1118,33 @@ export const ActionBar = ({ })} > {(isAllowed) => ( - + + )} )} diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx index 8e9206695..4c4a8f68c 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx @@ -1,5 +1,6 @@ +import { useState } from "react"; import { Controller, FieldValues, useFieldArray, useForm } from "react-hook-form"; -import { faQuestionCircle, faTrash } from "@fortawesome/free-solid-svg-icons"; +import { faInfoCircle, faQuestionCircle, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; import { useQuery } from "@tanstack/react-query"; @@ -21,16 +22,22 @@ import { TextArea, Tooltip } from "@app/components/v2"; +import { useOrgPermission } from "@app/context"; import { OrgPermissionSubjects } from "@app/context/OrgPermissionContext"; import { OrgGatewayPermissionActions } from "@app/context/OrgPermissionContext/types"; +import { OrgMembershipRole } from "@app/helpers/roles"; import { gatewaysQueryKeys, useCreateDynamicSecret } from "@app/hooks/api"; import { DynamicSecretProviders, KubernetesDynamicSecretCredentialType } from "@app/hooks/api/dynamicSecret/types"; +import { useGetVaultExternalMigrationConfigs } from "@app/hooks/api/migration/queries"; +import { VaultKubernetesRole } from "@app/hooks/api/migration/types"; import { ProjectEnv } from "@app/hooks/api/types"; import { slugSchema } from "@app/lib/schemas"; +import { VaultKubernetesImportModal } from "./VaultKubernetesImportModal"; + enum RoleType { ClusterRole = "cluster-role", Role = "role" @@ -162,11 +169,14 @@ export const KubernetesInputForm = ({ environments, isSingleEnvironmentMode }: Props) => { + const [isVaultImportModalOpen, setIsVaultImportModalOpen] = useState(false); + const { control, formState: { isSubmitting }, handleSubmit, - watch + watch, + setValue } = useForm({ resolver: zodResolver(formSchema), defaultValues: { @@ -193,11 +203,81 @@ export const KubernetesInputForm = ({ const createDynamicSecret = useCreateDynamicSecret(); const { data: gateways, isPending: isGatewaysLoading } = useQuery(gatewaysQueryKeys.list()); + const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); + const { hasOrgRole } = useOrgPermission(); + const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const sslEnabled = watch("provider.sslEnabled"); const credentialType = watch("provider.credentialType"); const authMethod = watch("provider.authMethod"); + const handleVaultImport = (role: VaultKubernetesRole) => { + try { + setValue("name", role.name); + + setValue("provider.url", role.config.kubernetes_host); + + // Set CA certificate if available + if (role.config.kubernetes_ca_cert) { + setValue("provider.ca", role.config.kubernetes_ca_cert); + setValue("provider.sslEnabled", true); + } + + // Determine credential type based on role configuration + if (role.service_account_name) { + // Static credential type + setValue("provider.credentialType", KubernetesDynamicSecretCredentialType.Static); + setValue("provider.serviceAccountName", role.service_account_name); + + // Set namespace (single namespace for static) + if (role.allowed_kubernetes_namespaces && role.allowed_kubernetes_namespaces.length > 0) { + setValue("provider.namespace", role.allowed_kubernetes_namespaces[0]); + } + } else if (role.kubernetes_role_name) { + // Dynamic credential type + setValue("provider.credentialType", KubernetesDynamicSecretCredentialType.Dynamic); + setValue("provider.role", role.kubernetes_role_name); + + // Set role type + const roleType = + role.kubernetes_role_type === "ClusterRole" ? RoleType.ClusterRole : RoleType.Role; + setValue("provider.roleType", roleType); + + // Set allowed namespaces (comma-separated for dynamic) + if (role.allowed_kubernetes_namespaces && role.allowed_kubernetes_namespaces.length > 0) { + setValue("provider.namespace", role.allowed_kubernetes_namespaces.join(", ")); + } + } + + // Set TTLs if available + if (role.token_default_ttl) { + const defaultTTL = `${role.token_default_ttl}s`; + setValue("defaultTTL", defaultTTL); + } + + if (role.token_max_ttl) { + const maxTTL = `${role.token_max_ttl}s`; + setValue("maxTTL", maxTTL); + } + + // Set audiences if available + if (role.token_default_audiences && role.token_default_audiences.length > 0) { + setValue("provider.audiences", role.token_default_audiences); + } + + createNotification({ + type: "info", + text: "Configuration loaded successfully from HashiCorp Vault" + }); + } catch { + createNotification({ + type: "error", + text: "Failed to load configuration from HashiCorp Vault" + }); + } + }; + const handleCreateDynamicSecret = async (formData: TForm) => { const { provider, usernameTemplate, ...rest } = formData; // wait till previous request is finished @@ -235,6 +315,39 @@ export const KubernetesInputForm = ({ return (
+ {hasVaultConnection && ( +
+
+ + Load values from HashiCorp Vault +
+ + + +
+ )} +
-
- Configuration +
+

Configuration

@@ -654,6 +767,11 @@ export const KubernetesInputForm = ({ Cancel
+ ); }; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VaultKubernetesImportModal.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VaultKubernetesImportModal.tsx new file mode 100644 index 000000000..3e9412ef9 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VaultKubernetesImportModal.tsx @@ -0,0 +1,223 @@ +import { useEffect, useState } from "react"; +import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { createNotification } from "@app/components/notifications"; +import { + Button, + FilterableSelect, + FormControl, + Modal, + ModalClose, + ModalContent +} from "@app/components/v2"; +import { + useGetVaultKubernetesRoles, + useGetVaultMounts, + useGetVaultNamespaces +} from "@app/hooks/api/migration/queries"; +import { VaultKubernetesRole } from "@app/hooks/api/migration/types"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + onImport: (role: VaultKubernetesRole) => void; +}; + +type ContentProps = { + onClose: () => void; + onImport: (role: VaultKubernetesRole) => void; +}; + +const Content = ({ onClose, onImport }: ContentProps) => { + const [selectedNamespace, setSelectedNamespace] = useState(null); + const [selectedMountPath, setSelectedMountPath] = useState(null); + const [selectedRole, setSelectedRole] = useState(null); + const [shouldFetchRoles, setShouldFetchRoles] = useState(false); + const [shouldFetchMounts, setShouldFetchMounts] = useState(false); + + const { data: namespaces, isLoading: isLoadingNamespaces } = useGetVaultNamespaces(); + const { data: roles, isLoading: isLoadingRoles } = useGetVaultKubernetesRoles( + shouldFetchRoles, + selectedNamespace ?? undefined, + selectedMountPath ?? undefined + ); + const { data: mounts, isLoading: isLoadingMounts } = useGetVaultMounts( + shouldFetchMounts, + selectedNamespace ?? undefined + ); + + // Filter to only show Kubernetes mounts + const kubernetesMounts = mounts?.filter((mount) => mount.type === "kubernetes"); + + // Enable fetching mounts when namespace is selected + useEffect(() => { + if (selectedNamespace) { + setShouldFetchMounts(true); + } + }, [selectedNamespace]); + + // Enable fetching roles when both namespace and mount path are selected + useEffect(() => { + if (selectedNamespace && selectedMountPath) { + setShouldFetchRoles(true); + } else { + setShouldFetchRoles(false); + } + }, [selectedNamespace, selectedMountPath]); + + const handleImport = () => { + if (!selectedRole) { + createNotification({ + type: "error", + text: "Please select a Vault Kubernetes role to load" + }); + return; + } + + if (!selectedNamespace) { + createNotification({ type: "error", text: "Please select a namespace" }); + return; + } + + if (!mounts || mounts.length === 0) { + createNotification({ + type: "error", + text: "No Vault mounts found. Please ensure you have Kubernetes secrets engine configured." + }); + return; + } + + onImport(selectedRole); + onClose(); + }; + + return ( + <> +
+
+ +
+

+ Select a Kubernetes secrets engine role from Vault to pre-fill the form with its + configuration including cluster URL, CA certificate, TTL settings, etc. +

+
+
+
+ + + <> + ns.name === selectedNamespace)} + onChange={(value) => { + if (value && !Array.isArray(value)) { + const namespace = value as { id: string; name: string }; + setSelectedNamespace(namespace.name); + setSelectedMountPath(null); + setSelectedRole(null); + } + }} + options={namespaces || []} + getOptionValue={(option) => option.name} + getOptionLabel={(option) => (option.name === "/" ? "root" : option.name)} + isDisabled={isLoadingNamespaces} + placeholder="Select namespace..." + className="w-full" + /> +

+ Select the Vault namespace to fetch available Kubernetes secrets engines +

+ +
+ + + <> + mount.path === selectedMountPath)} + onChange={(value) => { + if (value && !Array.isArray(value)) { + const mount = value as { path: string; type: string; version: string | null }; + setSelectedMountPath(mount.path.replace(/\/$/, "")); // Remove trailing slash + setSelectedRole(null); + } + }} + options={kubernetesMounts || []} + getOptionValue={(option) => option.path} + getOptionLabel={(option) => option.path.replace(/\/$/, "")} + isDisabled={isLoadingMounts || !kubernetesMounts?.length} + placeholder="Select Kubernetes secrets engine..." + className="w-full" + /> +

+ Choose a Kubernetes secrets engine mount to list available roles +

+ +
+ + + <> + { + if (value && !Array.isArray(value)) { + setSelectedRole(value as VaultKubernetesRole); + } else { + setSelectedRole(null); + } + }} + options={roles || []} + getOptionValue={(option) => option.name} + getOptionLabel={(option) => option.name} + isDisabled={isLoadingRoles || !roles?.length || !selectedMountPath} + placeholder={ + !selectedMountPath ? "Select a mount path first..." : "Select a role to load..." + } + isClearable + className="w-full" + /> +

+ Choose a Kubernetes role from the selected mount to load its configuration +

+ +
+ +
+ + + + +
+ + ); +}; + +export const VaultKubernetesImportModal = ({ isOpen, onOpenChange, onImport }: Props) => { + return ( + + + onOpenChange(false)} onImport={onImport} /> + + + ); +}; From 9d19e37710116071f5620e565618bf7f1acd5eb2 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 22 Oct 2025 03:34:37 +0800 Subject: [PATCH 02/38] misc: addressed greptile --- .../ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx index 4c4a8f68c..e16451564 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx @@ -196,7 +196,7 @@ export const KubernetesInputForm = ({ } }); - const { fields, append, remove } = useFieldArray({ + const { fields, append, remove, replace } = useFieldArray({ control, name: "provider.audiences" }); @@ -263,7 +263,7 @@ export const KubernetesInputForm = ({ // Set audiences if available if (role.token_default_audiences && role.token_default_audiences.length > 0) { - setValue("provider.audiences", role.token_default_audiences); + replace(role.token_default_audiences); } createNotification({ From c33935e5e11bd0811949b744d422f4c3ae7854f4 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 22 Oct 2025 19:56:42 +0530 Subject: [PATCH 03/38] feat: resolved locking of membership table --- .../db/migrations/20251018061215_sub-org.ts | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/backend/src/db/migrations/20251018061215_sub-org.ts b/backend/src/db/migrations/20251018061215_sub-org.ts index 6378fa66a..95e96d8c8 100644 --- a/backend/src/db/migrations/20251018061215_sub-org.ts +++ b/backend/src/db/migrations/20251018061215_sub-org.ts @@ -3,6 +3,7 @@ import { Knex } from "knex"; import { dropConstraintIfExists } from "@app/db/migrations/utils/dropConstraintIfExists"; import { AccessScope, TableName } from "../schemas"; +import { chunkArray } from "@app/lib/fn"; export async function up(knex: Knex): Promise { const hasParentOrgId = await knex.schema.hasColumn(TableName.Organization, "parentOrgId"); @@ -29,19 +30,38 @@ export async function up(knex: Knex): Promise { t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); }); - await knex.raw( - ` - UPDATE ?? AS identity - SET "orgId" = membership."scopeOrgId" - FROM ?? AS membership - WHERE - membership."actorIdentityId" = identity."id" - AND membership."scope" = ? -`, - [TableName.Identity, TableName.Membership, AccessScope.Organization] - ); + const identityMemberships = await knex(TableName.Membership) + .where({ + scope: AccessScope.Organization + }) + .whereNotNull("actorIdentityId") + .select("actorIdentityId", "scopeOrgId"); - await knex.raw(`DELETE FROM ?? WHERE "orgId" IS NULL`, [TableName.Identity]); + const identityToOrgMapping: Record = {}; + identityMemberships.forEach((el) => { + if (el.actorIdentityId) { + identityToOrgMapping[el.actorIdentityId] = el.scopeOrgId; + } + }); + + const batchMemberships = chunkArray(identityMemberships, 500); + for await (const membership of batchMemberships) { + const identityIds = membership.map((el) => el.actorIdentityId).filter(Boolean) as string[]; + if (identityIds.length) { + const identities = await knex(TableName.Identity).whereIn("id", identityIds).select("*"); + await knex(TableName.Identity) + .insert( + identities.map((el) => ({ + ...el, + orgId: identityToOrgMapping[el.id] + })) + ) + .onConflict("id") + .merge(); + } + } + + await knex(TableName.Identity).whereNull("orgId").delete(); await knex.schema.alterTable(TableName.Identity, (t) => { t.uuid("orgId").notNullable().alter(); From 1f33f24797397a3d266eadfd5d6a673834fde8b6 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 22 Oct 2025 19:58:26 +0530 Subject: [PATCH 04/38] feat: fixed esint issue --- backend/src/db/migrations/20251018061215_sub-org.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/db/migrations/20251018061215_sub-org.ts b/backend/src/db/migrations/20251018061215_sub-org.ts index 95e96d8c8..3254a4aca 100644 --- a/backend/src/db/migrations/20251018061215_sub-org.ts +++ b/backend/src/db/migrations/20251018061215_sub-org.ts @@ -1,9 +1,9 @@ import { Knex } from "knex"; import { dropConstraintIfExists } from "@app/db/migrations/utils/dropConstraintIfExists"; +import { chunkArray } from "@app/lib/fn"; import { AccessScope, TableName } from "../schemas"; -import { chunkArray } from "@app/lib/fn"; export async function up(knex: Knex): Promise { const hasParentOrgId = await knex.schema.hasColumn(TableName.Organization, "parentOrgId"); From 619598c6c3221a6b77afe0ae53b257c63b15b360 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 24 Oct 2025 20:37:52 +0530 Subject: [PATCH 05/38] feat: seperated into two migration --- .../db/migrations/20251018061215_sub-org.ts | 42 +-------------- ...0251024150349_sub-org-identity-backfill.ts | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts diff --git a/backend/src/db/migrations/20251018061215_sub-org.ts b/backend/src/db/migrations/20251018061215_sub-org.ts index 3254a4aca..089aeef90 100644 --- a/backend/src/db/migrations/20251018061215_sub-org.ts +++ b/backend/src/db/migrations/20251018061215_sub-org.ts @@ -1,9 +1,8 @@ import { Knex } from "knex"; import { dropConstraintIfExists } from "@app/db/migrations/utils/dropConstraintIfExists"; -import { chunkArray } from "@app/lib/fn"; -import { AccessScope, TableName } from "../schemas"; +import { TableName } from "../schemas"; export async function up(knex: Knex): Promise { const hasParentOrgId = await knex.schema.hasColumn(TableName.Organization, "parentOrgId"); @@ -19,8 +18,6 @@ export async function up(knex: Knex): Promise { await dropConstraintIfExists(TableName.Organization, "organizations_slug_unique", knex); t.unique(["rootOrgId", "parentOrgId", "slug"]); }); - - // had to switch to raw for null not distinct } const hasIdentityOrgCol = await knex.schema.hasColumn(TableName.Identity, "orgId"); @@ -29,43 +26,6 @@ export async function up(knex: Knex): Promise { t.uuid("orgId"); t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); }); - - const identityMemberships = await knex(TableName.Membership) - .where({ - scope: AccessScope.Organization - }) - .whereNotNull("actorIdentityId") - .select("actorIdentityId", "scopeOrgId"); - - const identityToOrgMapping: Record = {}; - identityMemberships.forEach((el) => { - if (el.actorIdentityId) { - identityToOrgMapping[el.actorIdentityId] = el.scopeOrgId; - } - }); - - const batchMemberships = chunkArray(identityMemberships, 500); - for await (const membership of batchMemberships) { - const identityIds = membership.map((el) => el.actorIdentityId).filter(Boolean) as string[]; - if (identityIds.length) { - const identities = await knex(TableName.Identity).whereIn("id", identityIds).select("*"); - await knex(TableName.Identity) - .insert( - identities.map((el) => ({ - ...el, - orgId: identityToOrgMapping[el.id] - })) - ) - .onConflict("id") - .merge(); - } - } - - await knex(TableName.Identity).whereNull("orgId").delete(); - - await knex.schema.alterTable(TableName.Identity, (t) => { - t.uuid("orgId").notNullable().alter(); - }); } } diff --git a/backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts b/backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts new file mode 100644 index 000000000..12aa38edc --- /dev/null +++ b/backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts @@ -0,0 +1,51 @@ +import { Knex } from "knex"; + +import { chunkArray } from "@app/lib/fn"; + +import { AccessScope, TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + const hasIdentityOrgCol = await knex.schema.hasColumn(TableName.Identity, "orgId"); + if (hasIdentityOrgCol) { + const identityMemberships = await knex(TableName.Membership) + .where({ + scope: AccessScope.Organization + }) + .whereNotNull("actorIdentityId") + .select("actorIdentityId", "scopeOrgId"); + + const identityToOrgMapping: Record = {}; + identityMemberships.forEach((el) => { + if (el.actorIdentityId) { + identityToOrgMapping[el.actorIdentityId] = el.scopeOrgId; + } + }); + + const batchMemberships = chunkArray(identityMemberships, 500); + for await (const membership of batchMemberships) { + const identityIds = membership.map((el) => el.actorIdentityId).filter(Boolean) as string[]; + if (identityIds.length) { + const identities = await knex(TableName.Identity).whereIn("id", identityIds).select("*"); + await knex(TableName.Identity) + .insert( + identities.map((el) => ({ + ...el, + orgId: identityToOrgMapping[el.id] + })) + ) + .onConflict("id") + .merge(); + } + } + + await knex(TableName.Identity).whereNull("orgId").delete(); + await knex.schema.alterTable(TableName.Identity, (t) => { + t.uuid("orgId").notNullable().alter(); + }); + } +} + +export async function down(): Promise {} + +const config = { transaction: false }; +export { config }; From 1d2708afe9dd49acd885fda02ae5e5b3aec2e559 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 24 Oct 2025 20:39:13 +0530 Subject: [PATCH 06/38] feat: moved to close to sub org migration --- ...ty-backfill.ts => 20251019061215_sub-org-identity-backfill.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename backend/src/db/migrations/{20251024150349_sub-org-identity-backfill.ts => 20251019061215_sub-org-identity-backfill.ts} (100%) diff --git a/backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts b/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts similarity index 100% rename from backend/src/db/migrations/20251024150349_sub-org-identity-backfill.ts rename to backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts From 555f900172858d5e593d11e15a6710967b71453d Mon Sep 17 00:00:00 2001 From: = Date: Fri, 24 Oct 2025 21:55:25 +0530 Subject: [PATCH 07/38] feat: added transaction --- ...0251019061215_sub-org-identity-backfill.ts | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts b/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts index 12aa38edc..71e8924d4 100644 --- a/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts +++ b/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts @@ -5,44 +5,46 @@ import { chunkArray } from "@app/lib/fn"; import { AccessScope, TableName } from "../schemas"; export async function up(knex: Knex): Promise { - const hasIdentityOrgCol = await knex.schema.hasColumn(TableName.Identity, "orgId"); - if (hasIdentityOrgCol) { - const identityMemberships = await knex(TableName.Membership) - .where({ - scope: AccessScope.Organization - }) - .whereNotNull("actorIdentityId") - .select("actorIdentityId", "scopeOrgId"); + await knex.transaction(async (tx) => { + const hasIdentityOrgCol = await tx.schema.hasColumn(TableName.Identity, "orgId"); + if (hasIdentityOrgCol) { + const identityMemberships = await tx(TableName.Membership) + .where({ + scope: AccessScope.Organization + }) + .whereNotNull("actorIdentityId") + .select("actorIdentityId", "scopeOrgId"); - const identityToOrgMapping: Record = {}; - identityMemberships.forEach((el) => { - if (el.actorIdentityId) { - identityToOrgMapping[el.actorIdentityId] = el.scopeOrgId; - } - }); + const identityToOrgMapping: Record = {}; + identityMemberships.forEach((el) => { + if (el.actorIdentityId) { + identityToOrgMapping[el.actorIdentityId] = el.scopeOrgId; + } + }); - const batchMemberships = chunkArray(identityMemberships, 500); - for await (const membership of batchMemberships) { - const identityIds = membership.map((el) => el.actorIdentityId).filter(Boolean) as string[]; - if (identityIds.length) { - const identities = await knex(TableName.Identity).whereIn("id", identityIds).select("*"); - await knex(TableName.Identity) - .insert( - identities.map((el) => ({ - ...el, - orgId: identityToOrgMapping[el.id] - })) - ) - .onConflict("id") - .merge(); + const batchMemberships = chunkArray(identityMemberships, 500); + for await (const membership of batchMemberships) { + const identityIds = membership.map((el) => el.actorIdentityId).filter(Boolean) as string[]; + if (identityIds.length) { + const identities = await tx(TableName.Identity).whereIn("id", identityIds).select("*"); + await tx(TableName.Identity) + .insert( + identities.map((el) => ({ + ...el, + orgId: identityToOrgMapping[el.id] + })) + ) + .onConflict("id") + .merge(); + } } + + await tx(TableName.Identity).whereNull("orgId").delete(); + await tx.schema.alterTable(TableName.Identity, (t) => { + t.uuid("orgId").notNullable().alter(); + }); } - - await knex(TableName.Identity).whereNull("orgId").delete(); - await knex.schema.alterTable(TableName.Identity, (t) => { - t.uuid("orgId").notNullable().alter(); - }); - } + }); } export async function down(): Promise {} From a35dc858ba6d8935c4b0f1492cf93c69024c5321 Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Sat, 25 Oct 2025 01:56:13 +0530 Subject: [PATCH 08/38] feat(project-service): add unique slug check when creating project --- backend/src/services/project/project-service.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index e29f18404..dce0ed2cc 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -303,13 +303,26 @@ export const projectServiceFactory = ({ }); } + const slug = projectSlug || slugify(`${workspaceName}-${alphaNumericNanoId(4)}`); + + const existingProject = await projectDAL.findOne({ + slug, + orgId: organization.id + }); + + if (existingProject) { + throw new BadRequestError({ + message: `Failed to create project. A project with the slug "${slug}" already exists in your organization. Please choose a different name or slug.` + }); + } + const project = await projectDAL.create( { name: workspaceName, type, description: workspaceDescription, orgId: organization.id, - slug: projectSlug || slugify(`${workspaceName}-${alphaNumericNanoId(4)}`), + slug, kmsSecretManagerKeyId: kmsKeyId, version: ProjectVersion.V3, pitVersionLimit: 10 From 1722f85e67586af62ee57968d218ae71b45cff6a Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Fri, 24 Oct 2025 20:12:35 -0300 Subject: [PATCH 09/38] Add org option to block duplicate destinations on secret syncs --- ...ock-duplicate-sync-destinations-setting.ts | 27 ++++ backend/src/db/schemas/organizations.ts | 3 +- backend/src/server/routes/index.ts | 2 + .../server/routes/v1/organization-router.ts | 4 + backend/src/services/org/org-schema.ts | 3 +- backend/src/services/org/org-service.ts | 6 +- backend/src/services/org/org-types.ts | 1 + .../secret-sync/secret-sync-service.ts | 140 +++++++++++------- .../forms/CreateSecretSyncForm.tsx | 21 ++- .../SecretSyncReviewFields.tsx | 49 +++++- .../src/hooks/api/organization/queries.tsx | 6 +- frontend/src/hooks/api/organization/types.ts | 2 + ...DuplicateSecretSyncDestinationsSection.tsx | 64 ++++++++ .../index.ts | 1 + .../OrgProductSettingsTab.tsx | 72 +++++++++ .../OrgProductSettingsTab/index.tsx | 1 + .../components/OrgTabGroup/OrgTabGroup.tsx | 8 +- .../SettingsPage/components/index.tsx | 2 + 18 files changed, 339 insertions(+), 73 deletions(-) create mode 100644 backend/src/db/migrations/20251023123213_block-duplicate-sync-destinations-setting.ts create mode 100644 frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx create mode 100644 frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts create mode 100644 frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx create mode 100644 frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/index.tsx diff --git a/backend/src/db/migrations/20251023123213_block-duplicate-sync-destinations-setting.ts b/backend/src/db/migrations/20251023123213_block-duplicate-sync-destinations-setting.ts new file mode 100644 index 000000000..7675eb3e1 --- /dev/null +++ b/backend/src/db/migrations/20251023123213_block-duplicate-sync-destinations-setting.ts @@ -0,0 +1,27 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + const hasOrgBlockDuplicateColumn = await knex.schema.hasColumn( + TableName.Organization, + "blockDuplicateSecretSyncDestinations" + ); + if (!hasOrgBlockDuplicateColumn) { + await knex.schema.table(TableName.Organization, (table) => { + table.boolean("blockDuplicateSecretSyncDestinations").notNullable().defaultTo(false); + }); + } +} + +export async function down(knex: Knex): Promise { + const hasOrgBlockDuplicateColumn = await knex.schema.hasColumn( + TableName.Organization, + "blockDuplicateSecretSyncDestinations" + ); + if (hasOrgBlockDuplicateColumn) { + await knex.schema.table(TableName.Organization, (table) => { + table.dropColumn("blockDuplicateSecretSyncDestinations"); + }); + } +} diff --git a/backend/src/db/schemas/organizations.ts b/backend/src/db/schemas/organizations.ts index a1c01151f..3cc7fe858 100644 --- a/backend/src/db/schemas/organizations.ts +++ b/backend/src/db/schemas/organizations.ts @@ -40,7 +40,8 @@ export const OrganizationsSchema = z.object({ googleSsoAuthEnforced: z.boolean().default(false), googleSsoAuthLastUsed: z.date().nullable().optional(), parentOrgId: z.string().uuid().nullable().optional(), - rootOrgId: z.string().uuid().nullable().optional() + rootOrgId: z.string().uuid().nullable().optional(), + blockDuplicateSecretSyncDestinations: z.boolean().default(false) }); export type TOrganizations = z.infer; diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 53cf1f961..44b9a1601 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1960,6 +1960,8 @@ export const registerRoutes = async ( secretImportDAL, permissionService, appConnectionService, + projectDAL, + orgDAL, folderDAL, secretSyncQueue, projectBotService, diff --git a/backend/src/server/routes/v1/organization-router.ts b/backend/src/server/routes/v1/organization-router.ts index 76b3eae51..d4b0058f9 100644 --- a/backend/src/server/routes/v1/organization-router.ts +++ b/backend/src/server/routes/v1/organization-router.ts @@ -323,7 +323,11 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => { .min(1, "Max Shared Secret view count cannot be lower than 1") .max(1000, "Max Shared Secret view count cannot exceed 1000") .nullable() + .optional(), + blockDuplicateSecretSyncDestinations: z + .boolean() .optional() + .describe("Block duplicate secret sync destinations across the organization") }), response: { 200: z.object({ diff --git a/backend/src/services/org/org-schema.ts b/backend/src/services/org/org-schema.ts index 4a3bdb06e..be5c300b5 100644 --- a/backend/src/services/org/org-schema.ts +++ b/backend/src/services/org/org-schema.ts @@ -27,5 +27,6 @@ export const sanitizedOrganizationSchema = OrganizationsSchema.pick({ scannerProductEnabled: true, shareSecretsProductEnabled: true, maxSharedSecretLifetime: true, - maxSharedSecretViewLimit: true + maxSharedSecretViewLimit: true, + blockDuplicateSecretSyncDestinations: true }); diff --git a/backend/src/services/org/org-service.ts b/backend/src/services/org/org-service.ts index 20ed37a06..f0eff547a 100644 --- a/backend/src/services/org/org-service.ts +++ b/backend/src/services/org/org-service.ts @@ -408,7 +408,8 @@ export const orgServiceFactory = ({ scannerProductEnabled, shareSecretsProductEnabled, maxSharedSecretLifetime, - maxSharedSecretViewLimit + maxSharedSecretViewLimit, + blockDuplicateSecretSyncDestinations } }: TUpdateOrgDTO) => { const appCfg = getConfig(); @@ -592,7 +593,8 @@ export const orgServiceFactory = ({ scannerProductEnabled, shareSecretsProductEnabled, maxSharedSecretLifetime, - maxSharedSecretViewLimit + maxSharedSecretViewLimit, + blockDuplicateSecretSyncDestinations }); if (!org) throw new NotFoundError({ message: `Organization with ID '${orgId}' not found` }); return org; diff --git a/backend/src/services/org/org-types.ts b/backend/src/services/org/org-types.ts index 48680456c..2587045bb 100644 --- a/backend/src/services/org/org-types.ts +++ b/backend/src/services/org/org-types.ts @@ -90,6 +90,7 @@ export type TUpdateOrgDTO = { shareSecretsProductEnabled: boolean; maxSharedSecretLifetime: number; maxSharedSecretViewLimit: number | null; + blockDuplicateSecretSyncDestinations: boolean; }>; } & TOrgPermission; diff --git a/backend/src/services/secret-sync/secret-sync-service.ts b/backend/src/services/secret-sync/secret-sync-service.ts index 6a2f49386..b3eb05369 100644 --- a/backend/src/services/secret-sync/secret-sync-service.ts +++ b/backend/src/services/secret-sync/secret-sync-service.ts @@ -15,6 +15,8 @@ import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; import { deepEqualSkipFields } from "@app/lib/fn/object"; import { OrgServiceActor } from "@app/lib/types"; import { TAppConnectionServiceFactory } from "@app/services/app-connection/app-connection-service"; +import { TOrgDALFactory } from "@app/services/org/org-dal"; +import { TProjectDALFactory } from "@app/services/project/project-dal"; import { TProjectBotServiceFactory } from "@app/services/project-bot/project-bot-service"; import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal"; import { SecretSync } from "@app/services/secret-sync/secret-sync-enums"; @@ -50,6 +52,8 @@ type TSecretSyncServiceFactoryDep = { secretImportDAL: TSecretImportDALFactory; appConnectionService: Pick; permissionService: Pick; + projectDAL: Pick; + orgDAL: Pick; projectBotService: Pick; folderDAL: Pick; keyStore: Pick; @@ -68,6 +72,8 @@ export const secretSyncServiceFactory = ({ secretImportDAL, permissionService, appConnectionService, + projectDAL, + orgDAL, projectBotService, secretSyncQueue, keyStore, @@ -225,6 +231,61 @@ export const secretSyncServiceFactory = ({ return secretSync as TSecretSync; }; + const checkDuplicateDestination = async ( + { destination, destinationConfig, excludeSyncId, projectId }: TCheckDuplicateDestinationDTO, + actor: OrgServiceActor + ) => { + const skipFields = SECRET_SYNC_SKIP_FIELDS_MAP[destination]; + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorId: actor.id, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + actionProjectType: ActionProjectType.SecretManager, + projectId + }); + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionSecretSyncActions.Read, + ProjectPermissionSub.SecretSyncs + ); + + if (!destinationConfig || Object.keys(destinationConfig).length === 0) { + return { hasDuplicate: false, duplicateProjectId: undefined }; + } + + try { + const existingSyncs = await secretSyncDAL.findByDestinationAndOrgId(destination, actor.orgId); + + const duplicates = existingSyncs.filter((sync) => { + if (sync.id === excludeSyncId) { + return false; + } + + try { + const baseFieldsMatch = deepEqualSkipFields(sync.destinationConfig, destinationConfig, skipFields); + if (baseFieldsMatch) { + return DESTINATION_DUPLICATE_CHECK_MAP[destination]( + sync.destinationConfig as Record, + destinationConfig + ); + } + return false; + } catch { + return false; + } + }); + + const hasDuplicate = duplicates.length > 0; + return { + hasDuplicate, + duplicateProjectId: hasDuplicate ? duplicates[0].projectId : undefined + }; + } catch (error) { + return { hasDuplicate: false, duplicateProjectId: undefined }; + } + }; + const createSecretSync = async ( { projectId, secretPath, environment, ...params }: TCreateSecretSyncDTO, actor: OrgServiceActor @@ -271,6 +332,30 @@ export const secretSyncServiceFactory = ({ message: `Could not find folder with path "${secretPath}" in environment "${environment}" for project with ID "${projectId}"` }); + const project = await projectDAL.findById(projectId); + if (!project) { + throw new NotFoundError({ message: "Project not found" }); + } + + const organization = await orgDAL.findById(project.orgId); + if (organization?.blockDuplicateSecretSyncDestinations) { + const duplicateCheck = await checkDuplicateDestination( + { + destination: params.destination, + destinationConfig: params.destinationConfig, + projectId + }, + actor + ); + if (duplicateCheck.hasDuplicate) { + throw new BadRequestError({ + message: `A secret sync with this destination already exists${ + duplicateCheck.duplicateProjectId ? ` in project ${duplicateCheck.duplicateProjectId}` : "" + }.` + }); + } + } + const destinationApp = SECRET_SYNC_CONNECTION_MAP[params.destination]; // validates permission to connect and app is valid for sync destination @@ -703,61 +788,6 @@ export const secretSyncServiceFactory = ({ return updatedSecretSync as TSecretSync; }; - const checkDuplicateDestination = async ( - { destination, destinationConfig, excludeSyncId, projectId }: TCheckDuplicateDestinationDTO, - actor: OrgServiceActor - ) => { - const skipFields = SECRET_SYNC_SKIP_FIELDS_MAP[destination]; - const { permission } = await permissionService.getProjectPermission({ - actor: actor.type, - actorId: actor.id, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - actionProjectType: ActionProjectType.SecretManager, - projectId - }); - - ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionSecretSyncActions.Read, - ProjectPermissionSub.SecretSyncs - ); - - if (!destinationConfig || Object.keys(destinationConfig).length === 0) { - return { hasDuplicate: false, duplicateProjectId: undefined }; - } - - try { - const existingSyncs = await secretSyncDAL.findByDestinationAndOrgId(destination, actor.orgId); - - const duplicates = existingSyncs.filter((sync) => { - if (sync.id === excludeSyncId) { - return false; - } - - try { - const baseFieldsMatch = deepEqualSkipFields(sync.destinationConfig, destinationConfig, skipFields); - if (baseFieldsMatch) { - return DESTINATION_DUPLICATE_CHECK_MAP[destination]( - sync.destinationConfig as Record, - destinationConfig - ); - } - return false; - } catch { - return false; - } - }); - - const hasDuplicate = duplicates.length > 0; - return { - hasDuplicate, - duplicateProjectId: hasDuplicate ? duplicates[0].projectId : undefined - }; - } catch (error) { - return { hasDuplicate: false, duplicateProjectId: undefined }; - } - }; - return { listSecretSyncOptions, listSecretSyncsByProjectId, diff --git a/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx b/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx index 45e0297bd..d10d27803 100644 --- a/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx +++ b/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx @@ -8,13 +8,14 @@ import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Switch } from "@app/components/v2"; -import { useProject } from "@app/context"; +import { useOrganization, useProject } from "@app/context"; import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSync, SecretSyncInitialSyncBehavior, TSecretSync, useCreateSecretSync, + useDuplicateDestinationCheck, useSecretSyncOption } from "@app/hooks/api/secretSyncs"; @@ -48,6 +49,7 @@ export const CreateSecretSyncForm = ({ }: Props) => { const createSecretSync = useCreateSecretSync(); const { currentProject } = useProject(); + const { currentOrg } = useOrganization(); const { name: destinationName } = SECRET_SYNC_MAP[destination]; const [showConfirmation, setShowConfirmation] = useState(false); @@ -106,11 +108,20 @@ export const CreateSecretSyncForm = ({ setSelectedTabIndex((prev) => prev - 1); }; - const { handleSubmit, trigger, control } = formMethods; + const { handleSubmit, trigger, control, watch } = formMethods; + + const { hasDuplicate } = useDuplicateDestinationCheck({ + destination, + projectId: currentProject?.id || "", + enabled: true, + destinationConfig: watch("destinationConfig") + }); const isStepValid = async (index: number) => trigger(FORM_TABS[index].fields); const isFinalStep = selectedTabIndex === FORM_TABS.length - 1; + const isCreateButtonDisabled = + isFinalStep && hasDuplicate && currentOrg?.blockDuplicateSecretSyncDestinations; const handleNext = async () => { if (isFinalStep) { @@ -245,7 +256,11 @@ export const CreateSecretSyncForm = ({
- {selectedTabIndex > 0 && ( diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx index 44d35cd2c..4a796933d 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx @@ -6,7 +6,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; import { Badge } from "@app/components/v2"; -import { useProject } from "@app/context"; +import { useOrganization, useProject } from "@app/context"; import { SECRET_SYNC_INITIAL_SYNC_BEHAVIOR_MAP, SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSync, useDuplicateDestinationCheck } from "@app/hooks/api/secretSyncs"; @@ -51,6 +51,7 @@ import { ZabbixSyncReviewFields } from "./ZabbixSyncReviewFields"; export const SecretSyncReviewFields = () => { const { watch } = useFormContext(); const { currentProject } = useProject(); + const { currentOrg } = useOrganization(); let DestinationFieldsComponent: ReactNode; let AdditionalSyncOptionsFieldsComponent: ReactNode; @@ -193,18 +194,50 @@ export const SecretSyncReviewFields = () => { {isChecking && Checking...}
{hasDuplicate && ( -
-
- +
+
+

- Another secret sync in your organization is already configured with the same - destination. This may lead to conflicts or unexpected behavior. + {currentOrg?.blockDuplicateSecretSyncDestinations + ? "Another secret sync in your organization is already configured with the same destination. This organization has blocking duplicate destinations enabled." + : "Another secret sync in your organization is already configured with the same destination. This may lead to conflicts or unexpected behavior."}

{duplicateProjectId && ( -

+

Duplicate found in project ID:{" "} - + {duplicateProjectId}

diff --git a/frontend/src/hooks/api/organization/queries.tsx b/frontend/src/hooks/api/organization/queries.tsx index bbf73dd25..4340f9718 100644 --- a/frontend/src/hooks/api/organization/queries.tsx +++ b/frontend/src/hooks/api/organization/queries.tsx @@ -125,7 +125,8 @@ export const useUpdateOrg = () => { scannerProductEnabled, shareSecretsProductEnabled, maxSharedSecretLifetime, - maxSharedSecretViewLimit + maxSharedSecretViewLimit, + blockDuplicateSecretSyncDestinations }) => { return apiRequest.patch(`/api/v1/organization/${orgId}`, { name, @@ -146,7 +147,8 @@ export const useUpdateOrg = () => { scannerProductEnabled, shareSecretsProductEnabled, maxSharedSecretLifetime, - maxSharedSecretViewLimit + maxSharedSecretViewLimit, + blockDuplicateSecretSyncDestinations }); }, onSuccess: () => { diff --git a/frontend/src/hooks/api/organization/types.ts b/frontend/src/hooks/api/organization/types.ts index e9c36fada..78daa07b5 100644 --- a/frontend/src/hooks/api/organization/types.ts +++ b/frontend/src/hooks/api/organization/types.ts @@ -29,6 +29,7 @@ export type Organization = { shareSecretsProductEnabled: boolean; maxSharedSecretLifetime: number; maxSharedSecretViewLimit: number | null; + blockDuplicateSecretSyncDestinations: boolean; }; export type UpdateOrgDTO = { @@ -52,6 +53,7 @@ export type UpdateOrgDTO = { shareSecretsProductEnabled?: boolean; maxSharedSecretViewLimit?: number | null; maxSharedSecretLifetime?: number; + blockDuplicateSecretSyncDestinations?: boolean; }; export type BillingDetails = { diff --git a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx new file mode 100644 index 000000000..a2346bd91 --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx @@ -0,0 +1,64 @@ +import { useState } from "react"; + +import { createNotification } from "@app/components/notifications"; +import { OrgPermissionCan } from "@app/components/permissions"; +import { Checkbox } from "@app/components/v2"; +import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; +import { useUpdateOrg } from "@app/hooks/api/organization/queries"; + +export const BlockDuplicateSecretSyncDestinationsSection = () => { + const { currentOrg } = useOrganization(); + const { mutateAsync: updateOrg } = useUpdateOrg(); + + const [isLoading, setIsLoading] = useState(false); + + const handleToggle = async (state: boolean) => { + setIsLoading(true); + + try { + if (!currentOrg?.id) { + setIsLoading(false); + return; + } + + await updateOrg({ + orgId: currentOrg.id, + blockDuplicateSecretSyncDestinations: state + }); + + createNotification({ + text: `Successfully ${state ? "enabled" : "disabled"} blocking duplicate secret sync destinations for this organization`, + type: "success" + }); + } catch (err) { + console.error(err); + createNotification({ + text: "Failed to update blocking duplicate secret sync destinations setting for this organization", + type: "error" + }); + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Block Duplicate Secret Sync Destinations

+ + {(isAllowed) => ( +
+ handleToggle(state as boolean)} + > + This feature prevents creating secret syncs with destinations that are already in use + by other syncs in your organization. + +
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts new file mode 100644 index 000000000..0426a6178 --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts @@ -0,0 +1 @@ +export { BlockDuplicateSecretSyncDestinationsSection } from "./BlockDuplicateSecretSyncDestinationsSection"; diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx new file mode 100644 index 000000000..5e23a4f97 --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx @@ -0,0 +1,72 @@ +import { useState } from "react"; + +import { createNotification } from "@app/components/notifications"; +import { OrgPermissionCan } from "@app/components/permissions"; +import { Switch } from "@app/components/v2"; +import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; +import { useUpdateOrg } from "@app/hooks/api/organization/queries"; + +export const OrgProductSettingsTab = () => { + const { currentOrg } = useOrganization(); + const { mutateAsync: updateOrg } = useUpdateOrg(); + + const [isLoading, setIsLoading] = useState(false); + + const handleToggle = async (state: boolean) => { + setIsLoading(true); + + try { + if (!currentOrg?.id) { + setIsLoading(false); + return; + } + + await updateOrg({ + orgId: currentOrg.id, + blockDuplicateSecretSyncDestinations: state + }); + + createNotification({ + text: `Successfully ${state ? "enabled" : "disabled"} blocking duplicate secret sync destinations for this organization`, + type: "success" + }); + } catch (err) { + console.error(err); + createNotification({ + text: "Failed to update blocking duplicate secret sync destinations setting for this organization", + type: "error" + }); + } finally { + setIsLoading(false); + } + }; + + return ( +
+
+

Secrets Management

+
+
+
+

+ Block Duplicate Secret Sync Destinations +

+

+ When enabled, this setting prevents the creation of multiple sync configurations + pointing to the same destination. +

+
+ + {(isAllowed) => ( + handleToggle(state as boolean)} + /> + )} + +
+
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/index.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/index.tsx new file mode 100644 index 000000000..c2b12e31f --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/index.tsx @@ -0,0 +1 @@ +export { OrgProductSettingsTab } from "./OrgProductSettingsTab"; diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx index 10eb0f6c0..85d4b259c 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx @@ -10,6 +10,7 @@ import { ExternalMigrationsTab } from "../ExternalMigrationsTab"; import { KmipTab } from "../KmipTab/OrgKmipTab"; import { OrgEncryptionTab } from "../OrgEncryptionTab"; import { OrgGeneralTab } from "../OrgGeneralTab"; +import { OrgProductSettingsTab } from "../OrgProductSettingsTab"; import { OrgProvisioningTab } from "../OrgProvisioningTab"; import { OrgSecurityTab } from "../OrgSecurityTab"; import { OrgSsoTab } from "../OrgSsoTab"; @@ -63,7 +64,12 @@ export const OrgTabGroup = () => { key: "project-templates", component: ProjectTemplatesTab }, - { name: "KMIP", key: "kmip", component: KmipTab } + { name: "KMIP", key: "kmip", component: KmipTab }, + { + name: "Product Enforcements", + key: "product-enforcements", + component: OrgProductSettingsTab + } ]; const [selectedTab, setSelectedTab] = useState(search.selectedTab || tabs[0].key); diff --git a/frontend/src/pages/organization/SettingsPage/components/index.tsx b/frontend/src/pages/organization/SettingsPage/components/index.tsx index 648613642..3387ed32b 100644 --- a/frontend/src/pages/organization/SettingsPage/components/index.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/index.tsx @@ -1 +1,3 @@ +export { BlockDuplicateSecretSyncDestinationsSection } from "./BlockDuplicateSecretSyncDestinationsSection"; +export { OrgProductSettingsTab } from "./OrgProductSettingsTab"; export { OrgTabGroup } from "./OrgTabGroup"; From 01d6f5d35ece5e4fb33c6923942ad50675eca71d Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 24 Oct 2025 19:27:28 -0700 Subject: [PATCH 10/38] feature: migrate to v3 badge, additional badge stories, re-useable documentation link badge and misc styling fixes/improvements --- .../decorators/DocumentDecorator.tsx | 2 +- .../app-connections/AppConnectionOption.tsx | 27 ++++-- .../pki-syncs/PkiSyncImportStatusBadge.tsx | 42 +++------ .../pki-syncs/PkiSyncModalHeader.tsx | 24 +---- .../pki-syncs/PkiSyncRemoveStatusBadge.tsx | 42 +++------ .../pki-syncs/PkiSyncStatusBadge.tsx | 42 ++++----- .../src/components/pki-syncs/PkiSyncTable.tsx | 8 +- .../pki-syncs/forms/PkiSyncReviewFields.tsx | 3 +- .../CreateSecretRotationV2Modal.tsx | 21 +---- .../SecretRotationV2ModalHeader.tsx | 22 +---- .../SecretRotationV2StatusBadge.tsx | 51 ++++------- .../shared/SecretsMappingTable.tsx | 13 ++- .../CreateSecretScanningDataSourceModal.tsx | 21 +---- .../SecretScanningDataSourceModalHeader.tsx | 22 +---- .../SecretScanningScanStatus.tsx | 39 +++----- .../SecretSyncImportStatusBadge.tsx | 42 +++------ .../secret-syncs/SecretSyncModalHeader.tsx | 22 +---- .../SecretSyncRemoveStatusBadge.tsx | 42 +++------ .../secret-syncs/SecretSyncStatusBadge.tsx | 42 ++++----- .../GcpSyncFields.tsx | 15 +-- .../shared/AwsRegionSelect.tsx | 5 +- .../AwsParameterStoreSyncReviewFields.tsx | 14 ++- .../AwsSecretsManagerSyncReviewFields.tsx | 16 ++-- .../RenderSyncReviewFields.tsx | 2 +- .../SecretSyncReviewFields.tsx | 6 +- frontend/src/components/v2/Badge/Badge.tsx | 47 ---------- frontend/src/components/v2/Badge/index.tsx | 1 - .../components/v2/PageHeader/PageHeader.tsx | 43 +++++---- frontend/src/components/v2/Select/Select.tsx | 4 + frontend/src/components/v2/index.tsx | 1 - .../v3/generic/Badge/Badge.stories.tsx | 91 ++++++++++++++++--- .../src/components/v3/generic/Badge/Badge.tsx | 49 +++++++--- frontend/src/components/v3/index.ts | 2 + .../DocumentationLinkBadge.stories.tsx | 24 +++++ .../DocumentationLinkBadge.tsx | 18 ++++ .../platform/DocumentationLinkBadge/index.ts | 1 + .../src/components/v3/platform/ScopeIcons.tsx | 8 ++ frontend/src/components/v3/platform/index.ts | 2 + frontend/src/helpers/policies.ts | 14 +-- frontend/src/helpers/secretScanningV2.ts | 36 +++++--- frontend/src/hooks/api/ca/constants.tsx | 2 +- frontend/src/hooks/api/pam/types/index.ts | 4 +- .../src/hooks/api/pkiSubscriber/constants.tsx | 2 +- .../components/NavBar/Navbar.tsx | 75 ++++++++------- .../ProjectSelect/ProjectSelect.tsx | 11 +-- .../SecretManagerLayout.tsx | 5 +- .../SecretScanningLayout.tsx | 5 +- .../components/ServerAdminsTable.tsx | 19 ++-- .../components/CachingPageForm.tsx | 13 +-- .../components/EncryptionPageForm.tsx | 16 ++-- .../components/EnvironmentPageForm.tsx | 20 +--- .../components/MachineIdentitiesTable.tsx | 6 +- .../components/OrganizationsTable.tsx | 24 ++--- .../components/UserIdentitiesTable.tsx | 22 ++--- .../CaCertificatesTable.tsx | 4 +- .../components/CaTable.tsx | 2 +- .../components/ExternalCaTable.tsx | 2 +- .../components/CertificatesTable.tsx | 2 +- .../components/CertificatesTable.utils.ts | 4 +- .../PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx | 19 ++-- .../components/PkiSyncsTab/PkiSyncsTab.tsx | 22 ++--- .../PkiSubscriberCertificatesTable.tsx | 4 +- .../components/PkiSubscribersTable.tsx | 2 +- .../components/PkiSyncActionTriggers.tsx | 23 ++--- .../PkiSyncOptionsSection.tsx | 3 +- .../components/PkiSyncSourceSection.tsx | 19 ++-- .../CertificateProfilesTab/ProfileRow.tsx | 32 ++----- .../kms/OverviewPage/components/CmekTable.tsx | 5 +- .../components/CmekVerifyModal.tsx | 34 +++---- .../OrgGroupsSection/OrgGroupsSection.tsx | 6 +- .../IdentityAuthMethodModalContent.tsx | 5 +- .../IdentitySection/IdentitySection.tsx | 42 ++------- .../OrgMembersSection/OrgMembersSection.tsx | 23 +++-- .../OrgMembersSection/OrgMembersTable.tsx | 18 ++-- .../OrgRoleTabSection/OrgRoleTable.tsx | 36 +++++--- .../components/AppConnectionHeader.tsx | 20 +--- .../components/AppConnectionRow.tsx | 10 +- .../components/AppConnectionsTable.tsx | 20 +--- .../AuditLogsPage/components/LogsFilter.tsx | 6 +- .../AuditLogsPage/components/LogsSection.tsx | 20 +--- .../ViewIdentityJwtAuthContent.tsx | 37 ++++---- .../ViewIdentityKubernetesAuthContent.tsx | 27 +++--- .../ViewIdentityLdapAuthContent.tsx | 27 +++--- .../ViewIdentityOidcAuthContent.tsx | 37 ++++---- .../ViewIdentityTlsCertAuthContent.tsx | 17 ++-- .../components/GatewayTab/GatewayTab.tsx | 20 +--- .../components/RelayTab/RelayTab.tsx | 20 +--- .../components/AllProjectView.tsx | 10 +- .../RequestSecret/RequestedSecretsRow.tsx | 31 +++---- .../ShareSecret/ShareSecretsRow.tsx | 2 +- .../components/AuditLogStreamHeader.tsx | 17 +--- .../OrgEncryptionTab/AwsKmsForm.tsx | 5 +- .../OrgEncryptionTab/GcpKmsForm.tsx | 5 +- .../components/OrgSsoTab/SSOModalHeader.tsx | 21 +---- .../OrgWorkflowIntegrationTab.tsx | 4 +- .../components/ProjectTemplatesSection.tsx | 20 +--- .../PamAccountForm/MySQLAccountForm.tsx | 4 +- .../PamAccountForm/PostgresAccountForm.tsx | 6 +- .../components/PamAccountRow.tsx | 18 ++-- .../components/PamResourceOption.tsx | 4 +- .../components/PamResourceRow.tsx | 4 +- .../components/PamSessionDetailsSection.tsx | 10 +- .../components/PamSessionStatusBadge.tsx | 59 +++++------- .../GroupsSection/GroupsSection.tsx | 6 +- .../components/IdentityTab/IdentityTab.tsx | 20 +--- .../IdentityTab/components/IdentityModal.tsx | 9 +- .../MembersTab/components/MembersSection.tsx | 6 +- .../ProjectRoleList/ProjectRoleList.tsx | 22 ++++- .../ServiceTokenSection.tsx | 20 +--- .../NativeIntegrationsTab/IntegrationRow.tsx | 5 +- .../SecretSyncTable/SecretSyncRow.tsx | 19 ++-- .../SecretSyncsTab/SecretSyncsTab.tsx | 20 +--- .../SecretOverviewSecretRotationRow.tsx | 17 ++-- .../components/QuickSearchSecretItem.tsx | 17 ++-- .../SecretApprovalsPage.tsx | 10 +- .../AccessApprovalRequest.tsx | 69 +++++--------- .../components/ReviewAccessModal.tsx | 56 ++++-------- .../ApprovalPolicyList/ApprovalPolicyList.tsx | 20 +--- .../components/ApprovalPolicyRow.tsx | 21 ++--- .../components/PolicyMemberOption.tsx | 8 +- .../SecretApprovalRequest.tsx | 44 ++++----- .../components/ActionBar/ActionBar.tsx | 8 +- .../CreateDynamicSecretForm.tsx | 30 ++---- .../ReplicateFolderFromBoard.tsx | 21 +---- .../components/CommitForm/CommitForm.tsx | 20 ++-- .../CompareEnvironments.tsx | 13 +-- .../SecretDropzone/SecretDropzone.tsx | 26 ++---- .../SecretRotationItem.tsx | 4 +- .../components/SecretSyncActionTriggers.tsx | 23 ++--- ...wsParameterStoreSyncDestinationSection.tsx | 6 +- ...wsSecretsManagerSyncDestinationSection.tsx | 6 +- .../AwsParameterStoreSyncOptionsSection.tsx | 14 ++- .../AwsSecretsManagerSyncOptionsSection.tsx | 11 ++- .../RenderSyncOptionsSection.tsx | 2 +- .../SecretSyncOptionsSection.tsx | 5 +- .../components/SecretSyncSourceSection.tsx | 15 ++- .../components/MicrosoftTeamsConfigRow.tsx | 21 +++-- .../components/SlackConfigRow.tsx | 21 +++-- .../AwsParamterStoreConfigurePage.tsx | 4 +- .../AwsSecretManagerConfigurePage.tsx | 4 +- .../SecretScanningDataSourceSection.tsx | 30 +++--- .../components/SecretScanningResourceRow.tsx | 69 ++++++-------- .../components/SecretScanningScanRow.tsx | 48 +++++----- .../SecretScanningDataSourceRow.tsx | 71 ++++++--------- .../SecretScanningDataSourcesSection.tsx | 20 +--- .../components/SecretScanningFindingRow.tsx | 39 +++----- .../SecretScanningFindingsSection.tsx | 21 +---- .../SecretScanningFindingsTable.tsx | 64 +++++++------ .../SecretScanningUpdateFindingModal.tsx | 6 +- .../SecretScanningConfigForm.tsx | 19 +--- .../SshCertificateTemplatesTable.tsx | 2 +- .../ssh/SshCasPage/components/SshCaTable.tsx | 2 +- .../components/SshCertificatesTable.tsx | 2 +- .../components/SshHostGroupsTable.tsx | 4 +- .../SshHostsPage/components/SshHostsTable.tsx | 29 +++--- 155 files changed, 1267 insertions(+), 1740 deletions(-) delete mode 100644 frontend/src/components/v2/Badge/Badge.tsx delete mode 100644 frontend/src/components/v2/Badge/index.tsx create mode 100644 frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.stories.tsx create mode 100644 frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.tsx create mode 100644 frontend/src/components/v3/platform/DocumentationLinkBadge/index.ts create mode 100644 frontend/src/components/v3/platform/ScopeIcons.tsx create mode 100644 frontend/src/components/v3/platform/index.ts diff --git a/frontend/.storybook/decorators/DocumentDecorator.tsx b/frontend/.storybook/decorators/DocumentDecorator.tsx index 13f4dc8c7..b0d817c6e 100644 --- a/frontend/.storybook/decorators/DocumentDecorator.tsx +++ b/frontend/.storybook/decorators/DocumentDecorator.tsx @@ -3,7 +3,7 @@ import type { Decorator } from "@storybook/react-vite"; export const DocumentDecorator: Decorator = (Story) => { useEffect(() => { - const root = document.getElementsByTagName("html")[0]; + const root = document.documentElement; root.setAttribute("class", "overflow-visible"); }, []); diff --git a/frontend/src/components/app-connections/AppConnectionOption.tsx b/frontend/src/components/app-connections/AppConnectionOption.tsx index 30a37425c..793f9d821 100644 --- a/frontend/src/components/app-connections/AppConnectionOption.tsx +++ b/frontend/src/components/app-connections/AppConnectionOption.tsx @@ -1,9 +1,11 @@ import { components, OptionProps } from "react-select"; import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; -import { faBuilding, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Badge, Tooltip } from "@app/components/v2"; +import { Tooltip } from "@app/components/v2"; +import { Badge, OrgIcon, SubOrgIcon } from "@app/components/v3"; +import { useOrganization } from "@app/context"; import { TAvailableAppConnection } from "@app/hooks/api/appConnections"; export const AppConnectionOption = ({ @@ -13,6 +15,8 @@ export const AppConnectionOption = ({ }: OptionProps) => { const isCreateOption = props.data.id === "_create"; + const { isSubOrganization } = useOrganization(); + return (
@@ -23,15 +27,22 @@ export const AppConnectionOption = ({
) : ( <> -

{children}

+

{children}

{!props.data.projectId && ( - -
- - + + {isSubOrganization ? ( + + + Sub-Organization + + ) : ( + + Organization -
+ )}
)} {isSelected && ( diff --git a/frontend/src/components/pki-syncs/PkiSyncImportStatusBadge.tsx b/frontend/src/components/pki-syncs/PkiSyncImportStatusBadge.tsx index d5b3119d0..2cea3c55b 100644 --- a/frontend/src/components/pki-syncs/PkiSyncImportStatusBadge.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncImportStatusBadge.tsx @@ -1,27 +1,20 @@ import { ReactNode, useEffect, useMemo, useState } from "react"; -import { - faCheck, - faDownload, - faTriangleExclamation, - faXmark, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { differenceInSeconds } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { CheckIcon, DownloadIcon, LucideIcon, TriangleAlertIcon } from "lucide-react"; -import { Badge, Tooltip } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Tooltip } from "@app/components/v2"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs"; import { PkiSyncStatus, TPkiSync } from "@app/hooks/api/pkiSyncs"; type Props = { pkiSync: TPkiSync; - className?: string; mini?: boolean; }; -export const PkiSyncImportStatusBadge = ({ pkiSync, className, mini }: Props) => { +export const PkiSyncImportStatusBadge = ({ pkiSync, mini }: Props) => { const { importStatus, lastImportMessage, lastImportedAt, destination } = pkiSync; const [hide, setHide] = useState(importStatus === PkiSyncStatus.Succeeded); const destinationName = PKI_SYNC_MAP[destination].name; @@ -50,24 +43,24 @@ export const PkiSyncImportStatusBadge = ({ pkiSync, className, mini }: Props) => if (!importStatus || hide) return null; - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let label: string; - let icon: IconDefinition; + let Icon: LucideIcon; let tooltipContent: ReactNode; switch (importStatus) { case PkiSyncStatus.Pending: case PkiSyncStatus.Running: - variant = "primary"; + variant = "warning"; label = "Importing Certificates..."; tooltipContent = `Importing certificates from ${destinationName}. This may take a moment.`; - icon = faDownload; + Icon = DownloadIcon; break; case PkiSyncStatus.Failed: variant = "danger"; label = "Failed to Import Certificates"; - icon = faTriangleExclamation; + Icon = TriangleAlertIcon; tooltipContent = (
{failureMessage && ( @@ -93,20 +86,15 @@ export const PkiSyncImportStatusBadge = ({ pkiSync, className, mini }: Props) => tooltipContent = "Successfully imported certificates."; variant = "success"; label = "Certificates Imported"; - icon = faCheck; + Icon = CheckIcon; } return ( -
- - - {!mini && {label}} - -
+ + + {!mini && label} +
); }; diff --git a/frontend/src/components/pki-syncs/PkiSyncModalHeader.tsx b/frontend/src/components/pki-syncs/PkiSyncModalHeader.tsx index 0e18959dc..32f84c247 100644 --- a/frontend/src/components/pki-syncs/PkiSyncModalHeader.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncModalHeader.tsx @@ -1,6 +1,4 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - +import { DocumentationLinkBadge } from "@app/components/v3"; import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs"; import { PkiSync } from "@app/hooks/api/pkiSyncs"; @@ -20,23 +18,11 @@ export const PkiSyncModalHeader = ({ destination, isConfigured }: Props) => { className="h-12 w-12 rounded-md bg-bunker-500 p-2" />
-
+
{destinationDetails.name} Certificate Sync - -
- - Docs - -
-
+

{isConfigured diff --git a/frontend/src/components/pki-syncs/PkiSyncRemoveStatusBadge.tsx b/frontend/src/components/pki-syncs/PkiSyncRemoveStatusBadge.tsx index 3e898ba42..968431b84 100644 --- a/frontend/src/components/pki-syncs/PkiSyncRemoveStatusBadge.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncRemoveStatusBadge.tsx @@ -1,27 +1,20 @@ import { ReactNode, useEffect, useMemo, useState } from "react"; -import { - faCheck, - faEraser, - faTriangleExclamation, - faXmark, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { differenceInSeconds } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { AlertTriangleIcon, CheckIcon, EraserIcon, LucideIcon } from "lucide-react"; -import { Badge, Tooltip } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Tooltip } from "@app/components/v2"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs"; import { PkiSyncStatus, TPkiSync } from "@app/hooks/api/pkiSyncs"; type Props = { pkiSync: TPkiSync; - className?: string; mini?: boolean; }; -export const PkiSyncRemoveStatusBadge = ({ pkiSync, className, mini }: Props) => { +export const PkiSyncRemoveStatusBadge = ({ pkiSync, mini }: Props) => { const { removeStatus, lastRemoveMessage, lastRemovedAt, destination } = pkiSync; const [hide, setHide] = useState(removeStatus === PkiSyncStatus.Succeeded); const destinationName = PKI_SYNC_MAP[destination].name; @@ -50,24 +43,24 @@ export const PkiSyncRemoveStatusBadge = ({ pkiSync, className, mini }: Props) => if (!removeStatus || hide) return null; - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let label: string; - let icon: IconDefinition; + let Icon: LucideIcon; let tooltipContent: ReactNode; switch (removeStatus) { case PkiSyncStatus.Pending: case PkiSyncStatus.Running: - variant = "primary"; + variant = "warning"; label = "Removing Certificates..."; tooltipContent = `Removing certificates from ${destinationName}. This may take a moment.`; - icon = faEraser; + Icon = EraserIcon; break; case PkiSyncStatus.Failed: variant = "danger"; label = "Failed to Remove Certificates"; - icon = faTriangleExclamation; + Icon = AlertTriangleIcon; tooltipContent = (

{failureMessage && ( @@ -93,20 +86,15 @@ export const PkiSyncRemoveStatusBadge = ({ pkiSync, className, mini }: Props) => tooltipContent = "Successfully removed certificates."; variant = "success"; label = "Certificates Removed"; - icon = faCheck; + Icon = CheckIcon; } return ( -
- - - {!mini && {label}} - -
+ + + {!mini && label} +
); }; diff --git a/frontend/src/components/pki-syncs/PkiSyncStatusBadge.tsx b/frontend/src/components/pki-syncs/PkiSyncStatusBadge.tsx index 1fa207202..1c1294280 100644 --- a/frontend/src/components/pki-syncs/PkiSyncStatusBadge.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncStatusBadge.tsx @@ -1,55 +1,51 @@ import { - faCheck, - faExclamationTriangle, - faHourglass, - faRotate, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + AlertTriangleIcon, + CheckIcon, + HourglassIcon, + LucideIcon, + RefreshCwIcon +} from "lucide-react"; -import { Badge, BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { PkiSyncStatus } from "@app/hooks/api/pkiSyncs"; type Props = { status: PkiSyncStatus; -} & Omit; +} & Omit; export const PkiSyncStatusBadge = ({ status }: Props) => { - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let text: string; - let icon: IconDefinition; + let Icon: LucideIcon; switch (status) { case PkiSyncStatus.Failed: variant = "danger"; text = "Failed to Sync"; - icon = faExclamationTriangle; + Icon = AlertTriangleIcon; break; case PkiSyncStatus.Succeeded: variant = "success"; text = "Synced"; - icon = faCheck; + Icon = CheckIcon; break; case PkiSyncStatus.Pending: - variant = "primary"; + variant = "info"; text = "Queued"; - icon = faHourglass; + Icon = HourglassIcon; break; case PkiSyncStatus.Running: default: - variant = "primary"; + variant = "info"; text = "Syncing"; - icon = faRotate; + Icon = RefreshCwIcon; break; } return ( - - - {text} + + + {text} ); }; diff --git a/frontend/src/components/pki-syncs/PkiSyncTable.tsx b/frontend/src/components/pki-syncs/PkiSyncTable.tsx index 983e4687c..4fbc7a16d 100644 --- a/frontend/src/components/pki-syncs/PkiSyncTable.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncTable.tsx @@ -2,7 +2,6 @@ import { faPlug, faRefresh, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { - Badge, EmptyState, IconButton, Table, @@ -13,6 +12,7 @@ import { THead, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { TPkiSync } from "@app/hooks/api/pkiSyncs"; type Props = { @@ -29,10 +29,10 @@ const getSyncStatusBadge = (status?: string) => { case "FAILED": return Failed; case "RUNNING": - return Running; + return Running; case "PENDING": default: - return Pending; + return Pending; } }; @@ -71,7 +71,7 @@ export const PkiSyncTable = ({ pkiSyncs, onEdit, onDelete, onTrigger }: Props) = {pkiSync.name}
- {pkiSync.destination} + {pkiSync.destination}
{pkiSync.appConnectionName || "Unknown"} diff --git a/frontend/src/components/pki-syncs/forms/PkiSyncReviewFields.tsx b/frontend/src/components/pki-syncs/forms/PkiSyncReviewFields.tsx index be6b91948..43ee38e52 100644 --- a/frontend/src/components/pki-syncs/forms/PkiSyncReviewFields.tsx +++ b/frontend/src/components/pki-syncs/forms/PkiSyncReviewFields.tsx @@ -1,6 +1,7 @@ import { useFormContext } from "react-hook-form"; -import { Badge, GenericFieldLabel } from "@app/components/v2"; +import { GenericFieldLabel } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProject } from "@app/context"; import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs"; import { useListWorkspacePkiSubscribers } from "@app/hooks/api"; diff --git a/frontend/src/components/secret-rotations-v2/CreateSecretRotationV2Modal.tsx b/frontend/src/components/secret-rotations-v2/CreateSecretRotationV2Modal.tsx index ad02e1706..ceafc951a 100644 --- a/frontend/src/components/secret-rotations-v2/CreateSecretRotationV2Modal.tsx +++ b/frontend/src/components/secret-rotations-v2/CreateSecretRotationV2Modal.tsx @@ -1,6 +1,4 @@ import { useEffect, useState } from "react"; -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useRouterState } from "@tanstack/react-router"; import { SecretRotationV2Form } from "@app/components/secret-rotations-v2/forms"; @@ -8,6 +6,7 @@ import { TSecretRotationV2Form } from "@app/components/secret-rotations-v2/forms import { SecretRotationV2ModalHeader } from "@app/components/secret-rotations-v2/SecretRotationV2ModalHeader"; import { SecretRotationV2Select } from "@app/components/secret-rotations-v2/SecretRotationV2Select"; import { Modal, ModalContent } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { ProjectEnv } from "@app/hooks/api/projects/types"; import { SecretRotation, TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2"; @@ -115,23 +114,9 @@ export const CreateSecretRotationV2Modal = ({ onOpenChange, isOpen, ...props }: selectedRotation ? ( ) : ( -
+ ) } diff --git a/frontend/src/components/secret-rotations-v2/SecretRotationV2ModalHeader.tsx b/frontend/src/components/secret-rotations-v2/SecretRotationV2ModalHeader.tsx index d44d08046..a834d78dc 100644 --- a/frontend/src/components/secret-rotations-v2/SecretRotationV2ModalHeader.tsx +++ b/frontend/src/components/secret-rotations-v2/SecretRotationV2ModalHeader.tsx @@ -1,6 +1,4 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - +import { DocumentationLinkBadge } from "@app/components/v3"; import { SECRET_ROTATION_MAP } from "@app/helpers/secretRotationsV2"; import { SecretRotation } from "@app/hooks/api/secretRotationsV2"; @@ -20,23 +18,11 @@ export const SecretRotationV2ModalHeader = ({ type, isConfigured }: Props) => { className="h-12 w-12 rounded-md bg-bunker-500 p-2" />
-
+

{isConfigured diff --git a/frontend/src/components/secret-rotations-v2/SecretRotationV2StatusBadge.tsx b/frontend/src/components/secret-rotations-v2/SecretRotationV2StatusBadge.tsx index c3b38f7a7..edb7cac1b 100644 --- a/frontend/src/components/secret-rotations-v2/SecretRotationV2StatusBadge.tsx +++ b/frontend/src/components/secret-rotations-v2/SecretRotationV2StatusBadge.tsx @@ -1,18 +1,17 @@ -import { faBan, faRotate, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format, formatDistanceToNow } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { BanIcon, RefreshCwIcon, XIcon } from "lucide-react"; import { Tooltip } from "@app/components/v2"; -import { Badge } from "@app/components/v2/Badge/Badge"; +import { Badge } from "@app/components/v3"; import { SecretRotationStatus, TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2"; type Props = { secretRotation: TSecretRotationV2; - className?: string; }; -export const SecretRotationV2StatusBadge = ({ secretRotation, className }: Props) => { +export const SecretRotationV2StatusBadge = ({ secretRotation }: Props) => { const { isAutoRotationEnabled, rotationStatus, nextRotationAt, lastRotationMessage } = secretRotation; @@ -50,28 +49,18 @@ export const SecretRotationV2StatusBadge = ({ secretRotation, className }: Props

} > -
- - - Rotation Failed - -
+ + + Rotation Failed + ); } if (!isAutoRotationEnabled) { return ( - - + + Auto-Rotation Disabled ); @@ -92,20 +81,12 @@ export const SecretRotationV2StatusBadge = ({ secretRotation, className }: Props } > -
- = 7 ? "success" : "primary"} - className={twMerge( - "flex h-5 w-min items-center gap-1.5 whitespace-nowrap capitalize", - className - )} - > - - {daysToRotation < 0 - ? "Rotating" - : `Rotates ${formatDistanceToNow(nextRotationAt, { addSuffix: true })}`} - -
+ = 7 ? "info" : "warning"} className="capitalize"> + + {daysToRotation < 0 + ? "Rotating" + : `Rotates ${formatDistanceToNow(nextRotationAt, { addSuffix: true })}`} + ); }; diff --git a/frontend/src/components/secret-rotations-v2/forms/SecretRotationV2SecretsMappingFields/shared/SecretsMappingTable.tsx b/frontend/src/components/secret-rotations-v2/forms/SecretRotationV2SecretsMappingFields/shared/SecretsMappingTable.tsx index a012cb392..b5fafe11b 100644 --- a/frontend/src/components/secret-rotations-v2/forms/SecretRotationV2SecretsMappingFields/shared/SecretsMappingTable.tsx +++ b/frontend/src/components/secret-rotations-v2/forms/SecretRotationV2SecretsMappingFields/shared/SecretsMappingTable.tsx @@ -1,8 +1,10 @@ import { ReactNode } from "react"; -import { faArrowRight, faKey } from "@fortawesome/free-solid-svg-icons"; +import { faArrowRight } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { KeyIcon } from "lucide-react"; -import { Badge, FormLabel } from "@app/components/v2"; +import { FormLabel } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; type Props = { items: { name: string; input: ReactNode }[]; @@ -32,9 +34,10 @@ export const SecretsMappingTable = ({ items }: Props) => {
- - - {name} + {/* TODO(scott): probably shouldn't be a badge */} + + + {name}
diff --git a/frontend/src/components/secret-scanning/CreateSecretScanningDataSourceModal.tsx b/frontend/src/components/secret-scanning/CreateSecretScanningDataSourceModal.tsx index e4390024b..ac8c9dc24 100644 --- a/frontend/src/components/secret-scanning/CreateSecretScanningDataSourceModal.tsx +++ b/frontend/src/components/secret-scanning/CreateSecretScanningDataSourceModal.tsx @@ -1,10 +1,9 @@ import { useEffect, useState } from "react"; -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useRouterState } from "@tanstack/react-router"; import { TSecretScanningDataSourceForm } from "@app/components/secret-scanning/forms/schemas"; import { Modal, ModalContent } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { SecretScanningDataSource, TSecretScanningDataSource @@ -108,23 +107,9 @@ export const CreateSecretScanningDataSourceModal = ({ onOpenChange, isOpen, ...p selectedDataSource ? ( ) : ( -
+ ) } diff --git a/frontend/src/components/secret-scanning/SecretScanningDataSourceModalHeader.tsx b/frontend/src/components/secret-scanning/SecretScanningDataSourceModalHeader.tsx index da964d6b6..6ae644fa5 100644 --- a/frontend/src/components/secret-scanning/SecretScanningDataSourceModalHeader.tsx +++ b/frontend/src/components/secret-scanning/SecretScanningDataSourceModalHeader.tsx @@ -1,6 +1,4 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - +import { DocumentationLinkBadge } from "@app/components/v3"; import { SECRET_SCANNING_DATA_SOURCE_MAP } from "@app/helpers/secretScanningV2"; import { SecretScanningDataSource } from "@app/hooks/api/secretScanningV2"; @@ -20,23 +18,11 @@ export const SecretScanningDataSourceModalHeader = ({ type, isConfigured }: Prop className="h-12 rounded-md bg-bunker-500 p-2" />
-
+
{dataSourceDetails.name} Data Source - -
- - Docs - -
-
+ />

{isConfigured ? "Edit" : "Connect a"} {dataSourceDetails.name} Data Source diff --git a/frontend/src/components/secret-scanning/SecretScanningScanStatus.tsx b/frontend/src/components/secret-scanning/SecretScanningScanStatus.tsx index a02e050f0..35913414f 100644 --- a/frontend/src/components/secret-scanning/SecretScanningScanStatus.tsx +++ b/frontend/src/components/secret-scanning/SecretScanningScanStatus.tsx @@ -1,22 +1,23 @@ -import { faArrowRotateForward, faCheck, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { formatDistance } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { CheckIcon, RotateCwIcon, XIcon } from "lucide-react"; -import { Badge, Tooltip } from "@app/components/v2"; +import { Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { SecretScanningScanStatus } from "@app/hooks/api/secretScanningV2"; type Props = { status: SecretScanningScanStatus; statusMessage?: string | null; - className?: string; + scannedAt?: string | null; }; export const SecretScanningScanStatusBadge = ({ status, statusMessage, - className, + scannedAt }: Props) => { if (status === SecretScanningScanStatus.Failed) { @@ -53,11 +54,8 @@ export const SecretScanningScanStatusBadge = ({ } >

- - + + Scan Error
@@ -67,26 +65,17 @@ export const SecretScanningScanStatusBadge = ({ if (status === SecretScanningScanStatus.Queued || status === SecretScanningScanStatus.Scanning) { return ( - - - Scanning + + + Scanning ); } return ( - - - Complete + + + Complete ); }; diff --git a/frontend/src/components/secret-syncs/SecretSyncImportStatusBadge.tsx b/frontend/src/components/secret-syncs/SecretSyncImportStatusBadge.tsx index 54cfcd588..494528d00 100644 --- a/frontend/src/components/secret-syncs/SecretSyncImportStatusBadge.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncImportStatusBadge.tsx @@ -1,27 +1,20 @@ import { ReactNode, useEffect, useMemo, useState } from "react"; -import { - faCheck, - faDownload, - faTriangleExclamation, - faXmark, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { differenceInSeconds } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { AlertTriangleIcon, CheckIcon, DownloadIcon, LucideIcon } from "lucide-react"; -import { Badge, Tooltip } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Tooltip } from "@app/components/v2"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSyncStatus, TSecretSync } from "@app/hooks/api/secretSyncs"; type Props = { secretSync: TSecretSync; - className?: string; mini?: boolean; }; -export const SecretSyncImportStatusBadge = ({ secretSync, className, mini }: Props) => { +export const SecretSyncImportStatusBadge = ({ secretSync, mini }: Props) => { const { importStatus, lastImportMessage, lastImportedAt, destination } = secretSync; const [hide, setHide] = useState(importStatus === SecretSyncStatus.Succeeded); const destinationName = SECRET_SYNC_MAP[destination].name; @@ -50,24 +43,24 @@ export const SecretSyncImportStatusBadge = ({ secretSync, className, mini }: Pro if (!importStatus || hide) return null; - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let label: string; - let icon: IconDefinition; + let Icon: LucideIcon; let tooltipContent: ReactNode; switch (importStatus) { case SecretSyncStatus.Pending: case SecretSyncStatus.Running: - variant = "primary"; + variant = "warning"; label = "Importing Secrets..."; tooltipContent = `Importing secrets from ${destinationName}. This may take a moment.`; - icon = faDownload; + Icon = DownloadIcon; break; case SecretSyncStatus.Failed: variant = "danger"; label = "Failed to Import Secrets"; - icon = faTriangleExclamation; + Icon = AlertTriangleIcon; tooltipContent = (
{failureMessage && ( @@ -93,20 +86,15 @@ export const SecretSyncImportStatusBadge = ({ secretSync, className, mini }: Pro tooltipContent = "Successfully imported secrets."; variant = "success"; label = "Secrets Imported"; - icon = faCheck; + Icon = CheckIcon; } return ( -
- - - {!mini && {label}} - -
+ + + {!mini && label} +
); }; diff --git a/frontend/src/components/secret-syncs/SecretSyncModalHeader.tsx b/frontend/src/components/secret-syncs/SecretSyncModalHeader.tsx index ebbe34d75..41cbbcf58 100644 --- a/frontend/src/components/secret-syncs/SecretSyncModalHeader.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncModalHeader.tsx @@ -1,6 +1,4 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - +import { DocumentationLinkBadge } from "@app/components/v3"; import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSync } from "@app/hooks/api/secretSyncs"; @@ -20,23 +18,11 @@ export const SecretSyncModalHeader = ({ destination, isConfigured }: Props) => { className="h-12 w-12 rounded-md bg-bunker-500 object-contain p-2" />
-
+
{destinationDetails.name} Sync - -
- - Docs - -
-
+ />

{isConfigured diff --git a/frontend/src/components/secret-syncs/SecretSyncRemoveStatusBadge.tsx b/frontend/src/components/secret-syncs/SecretSyncRemoveStatusBadge.tsx index abbd78838..917386818 100644 --- a/frontend/src/components/secret-syncs/SecretSyncRemoveStatusBadge.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncRemoveStatusBadge.tsx @@ -1,27 +1,20 @@ import { ReactNode, useEffect, useMemo, useState } from "react"; -import { - faCheck, - faEraser, - faTriangleExclamation, - faXmark, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { differenceInSeconds } from "date-fns"; -import { twMerge } from "tailwind-merge"; +import { AlertTriangleIcon, CheckIcon, EraserIcon, LucideIcon } from "lucide-react"; -import { Badge, Tooltip } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Tooltip } from "@app/components/v2"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSyncStatus, TSecretSync } from "@app/hooks/api/secretSyncs"; type Props = { secretSync: TSecretSync; - className?: string; mini?: boolean; }; -export const SecretSyncRemoveStatusBadge = ({ secretSync, className, mini }: Props) => { +export const SecretSyncRemoveStatusBadge = ({ secretSync, mini }: Props) => { const { removeStatus, lastRemoveMessage, lastRemovedAt, destination } = secretSync; const [hide, setHide] = useState(removeStatus === SecretSyncStatus.Succeeded); const destinationName = SECRET_SYNC_MAP[destination].name; @@ -50,24 +43,24 @@ export const SecretSyncRemoveStatusBadge = ({ secretSync, className, mini }: Pro if (!removeStatus || hide) return null; - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let label: string; - let icon: IconDefinition; + let Icon: LucideIcon; let tooltipContent: ReactNode; switch (removeStatus) { case SecretSyncStatus.Pending: case SecretSyncStatus.Running: - variant = "primary"; + variant = "warning"; label = "Removing Secrets..."; tooltipContent = `Removing secrets from ${destinationName}. This may take a moment.`; - icon = faEraser; + Icon = EraserIcon; break; case SecretSyncStatus.Failed: variant = "danger"; label = "Failed to Remove Secrets"; - icon = faTriangleExclamation; + Icon = AlertTriangleIcon; tooltipContent = (

{failureMessage && ( @@ -93,20 +86,15 @@ export const SecretSyncRemoveStatusBadge = ({ secretSync, className, mini }: Pro tooltipContent = "Successfully removed secrets."; variant = "success"; label = "Secrets Removed"; - icon = faCheck; + Icon = CheckIcon; } return ( -
- - - {!mini && {label}} - -
+ + + {!mini && label} +
); }; diff --git a/frontend/src/components/secret-syncs/SecretSyncStatusBadge.tsx b/frontend/src/components/secret-syncs/SecretSyncStatusBadge.tsx index e0d541138..26ba74d2a 100644 --- a/frontend/src/components/secret-syncs/SecretSyncStatusBadge.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncStatusBadge.tsx @@ -1,55 +1,51 @@ import { - faCheck, - faExclamationTriangle, - faHourglass, - faRotate, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + AlertTriangleIcon, + CheckIcon, + HourglassIcon, + LucideIcon, + RefreshCwIcon +} from "lucide-react"; -import { Badge, BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { SecretSyncStatus } from "@app/hooks/api/secretSyncs"; type Props = { status: SecretSyncStatus; -} & Omit; +} & Omit; export const SecretSyncStatusBadge = ({ status }: Props) => { - let variant: BadgeProps["variant"]; + let variant: TBadgeProps["variant"]; let text: string; - let icon: IconDefinition; + let Icon: LucideIcon; switch (status) { case SecretSyncStatus.Failed: variant = "danger"; text = "Failed to Sync"; - icon = faExclamationTriangle; + Icon = AlertTriangleIcon; break; case SecretSyncStatus.Succeeded: variant = "success"; text = "Synced"; - icon = faCheck; + Icon = CheckIcon; break; case SecretSyncStatus.Pending: - variant = "primary"; + variant = "info"; text = "Queued"; - icon = faHourglass; + Icon = HourglassIcon; break; case SecretSyncStatus.Running: default: - variant = "primary"; + variant = "info"; text = "Syncing"; - icon = faRotate; + Icon = RefreshCwIcon; break; } return ( - - - {text} + + + {text} ); }; diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx index e7d988f46..08414c14e 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx @@ -5,14 +5,8 @@ import { faCircleInfo } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { SecretSyncConnectionField } from "@app/components/secret-syncs/forms/SecretSyncConnectionField"; -import { - Badge, - FilterableSelect, - FormControl, - Select, - SelectItem, - Tooltip -} from "@app/components/v2"; +import { FilterableSelect, FormControl, Select, SelectItem, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { GCP_SYNC_SCOPES } from "@app/helpers/secretSyncs"; import { useGcpConnectionListProjectLocations, @@ -26,10 +20,7 @@ import { TSecretSyncForm } from "../schemas"; const formatOptionLabel = ({ displayName, locationId }: TGcpLocation) => (
- {displayName}{" "} - - {locationId} - + {displayName} {locationId}
); diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/shared/AwsRegionSelect.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/shared/AwsRegionSelect.tsx index 6b1894626..829d7c44f 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/shared/AwsRegionSelect.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/shared/AwsRegionSelect.tsx @@ -2,7 +2,8 @@ import { components, OptionProps, SingleValue } from "react-select"; import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Badge, FilterableSelect } from "@app/components/v2"; +import { FilterableSelect } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { AWS_REGIONS } from "@app/helpers/appConnections"; const Option = ({ isSelected, children, ...props }: OptionProps<(typeof AWS_REGIONS)[number]>) => { @@ -10,7 +11,7 @@ const Option = ({ isSelected, children, ...props }: OptionProps<(typeof AWS_REGI

{children}

- + {props.data.slug} {isSelected && ( diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsParameterStoreSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsParameterStoreSyncReviewFields.tsx index 073cb4175..a70752703 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsParameterStoreSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsParameterStoreSyncReviewFields.tsx @@ -1,10 +1,10 @@ import { useFormContext } from "react-hook-form"; -import { faEye } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { EyeIcon } from "lucide-react"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; -import { Badge, Table, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; +import { Table, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { AWS_REGIONS } from "@app/helpers/appConnections"; import { SecretSync } from "@app/hooks/api/secretSyncs"; @@ -41,11 +41,9 @@ export const AwsParameterStoreSyncOptionsReviewFields = () => { } >
- - - - {tags.length} Tag{tags.length > 1 ? "s" : ""} - + + + {tags.length} Tag{tags.length > 1 ? "s" : ""}
diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsSecretsManagerSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsSecretsManagerSyncReviewFields.tsx index 90d7d5023..d37cae3f1 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsSecretsManagerSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/AwsSecretsManagerSyncReviewFields.tsx @@ -1,10 +1,10 @@ import { useFormContext } from "react-hook-form"; -import { faEye } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { EyeIcon } from "lucide-react"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; -import { Badge, Table, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; +import { Table, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { AWS_REGIONS } from "@app/helpers/appConnections"; import { SecretSync } from "@app/hooks/api/secretSyncs"; import { AwsSecretsManagerSyncMappingBehavior } from "@app/hooks/api/secretSyncs/types/aws-secrets-manager-sync"; @@ -26,7 +26,7 @@ export const AwsSecretsManagerSyncReviewFields = () => { <> {awsRegion?.name} - + {awsRegion?.slug}{" "} @@ -73,11 +73,9 @@ export const AwsSecretsManagerSyncOptionsReviewFields = () => { } >
- - - - {tags.length} Tag{tags.length > 1 ? "s" : ""} - + + + {tags.length} Tag{tags.length > 1 ? "s" : ""}
diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/RenderSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/RenderSyncReviewFields.tsx index f195f0e72..313d7eb3d 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/RenderSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/RenderSyncReviewFields.tsx @@ -2,7 +2,7 @@ import { useFormContext } from "react-hook-form"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; -import { Badge } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { SecretSync } from "@app/hooks/api/secretSyncs"; import { RenderSyncScope } from "@app/hooks/api/secretSyncs/types/render-sync"; diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx index 44d35cd2c..e5539c71f 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx @@ -5,7 +5,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; -import { Badge } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProject } from "@app/context"; import { SECRET_SYNC_INITIAL_SYNC_BEHAVIOR_MAP, SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { SecretSync, useDuplicateDestinationCheck } from "@app/hooks/api/secretSyncs"; @@ -224,7 +224,7 @@ export const SecretSyncReviewFields = () => {
- + {isAutoSyncEnabled ? "Enabled" : "Disabled"} @@ -235,7 +235,7 @@ export const SecretSyncReviewFields = () => { {AdditionalSyncOptionsFieldsComponent} {disableSecretDeletion && ( - Disabled + Disabled )}
diff --git a/frontend/src/components/v2/Badge/Badge.tsx b/frontend/src/components/v2/Badge/Badge.tsx deleted file mode 100644 index 36541a781..000000000 --- a/frontend/src/components/v2/Badge/Badge.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { forwardRef } from "react"; -import { cva, VariantProps } from "cva"; -import { twMerge } from "tailwind-merge"; - -interface IProps { - children: React.ReactNode; - className?: string; - onClick?: (e: React.MouseEvent) => void; -} - -const badgeVariants = cva( - [ - "inline-block cursor-default rounded-md bg-yellow/20 px-1.5 py-0.5 text-xs text-yellow opacity-80 hover:opacity-100" - ], - { - variants: { - variant: { - primary: "bg-yellow/20 text-yellow", - danger: "bg-red/20 text-red", - success: "bg-green/20 text-green", - org: "bg-org-v1/20 text-org-v1 [&_svg]:text-org-v1 flex items-center opacity-100 hover:bg-org-v1/10 [&_svg]:size-3 gap-x-1 w-min whitespace-nowrap", - namespace: - "bg-namespace-v1/20 text-namespace-v1 [&_svg]:text-namespace-v1 flex opacity-100 hover:bg-namespace-v1/10 items-center [&_svg]:size-3.5 gap-x-1.5 w-min whitespace-nowrap", - project: - "bg-primary/10 text-primary [&_svg]:text-primary opacity-100 hover:bg-primary/10 flex items-center [&_svg]:size-3 w-min gap-x-1.5 whitespace-nowrap", - instance: - "bg-mineshaft-200/20 text-mineshaft-200 [&_svg]:text-mineshaft-200 opacity-100 hover:bg-mineshaft-200/20 flex items-center [&_svg]:size-3 gap-x-1.5 w-min whitespace-nowrap" - } - } - } -); - -export type BadgeProps = VariantProps & IProps; - -export const Badge = forwardRef( - ({ children, className, variant, ...props }, ref) => { - return ( -
- {children} -
- ); - } -); diff --git a/frontend/src/components/v2/Badge/index.tsx b/frontend/src/components/v2/Badge/index.tsx deleted file mode 100644 index 5c7042709..000000000 --- a/frontend/src/components/v2/Badge/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Badge } from "./Badge"; diff --git a/frontend/src/components/v2/PageHeader/PageHeader.tsx b/frontend/src/components/v2/PageHeader/PageHeader.tsx index e3f72f61b..f84edfcd2 100644 --- a/frontend/src/components/v2/PageHeader/PageHeader.tsx +++ b/frontend/src/components/v2/PageHeader/PageHeader.tsx @@ -1,11 +1,16 @@ -import { IconDefinition } from "@fortawesome/free-brands-svg-icons"; -import { faCube, faCubes, faGlobe, faServer } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { createElement } from "react"; import { ReactNode } from "@tanstack/react-router"; +import { LucideIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; -import { Badge } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { + Badge, + InstanceIcon, + OrgIcon, + ProjectIcon, + SubOrgIcon, + TBadgeProps +} from "@app/components/v3"; import { ProjectType } from "@app/hooks/api/projects/types"; type Props = { @@ -16,19 +21,19 @@ type Props = { scope: "org" | "namespace" | "instance" | ProjectType | null; }; -const SCOPE_NAME: Record, { label: string; icon: IconDefinition }> = { - org: { label: "Organization", icon: faGlobe }, - [ProjectType.SecretManager]: { label: "Project", icon: faCube }, - [ProjectType.CertificateManager]: { label: "Project", icon: faCube }, - [ProjectType.SSH]: { label: "Project", icon: faCube }, - [ProjectType.KMS]: { label: "Project", icon: faCube }, - [ProjectType.PAM]: { label: "Project", icon: faCube }, - [ProjectType.SecretScanning]: { label: "Project", icon: faCube }, - namespace: { label: "Sub-Organization", icon: faCubes }, - instance: { label: "Server", icon: faServer } +const SCOPE_NAME: Record, { label: string; icon: LucideIcon }> = { + org: { label: "Organization", icon: OrgIcon }, + [ProjectType.SecretManager]: { label: "Project", icon: ProjectIcon }, + [ProjectType.CertificateManager]: { label: "Project", icon: ProjectIcon }, + [ProjectType.SSH]: { label: "Project", icon: ProjectIcon }, + [ProjectType.KMS]: { label: "Project", icon: ProjectIcon }, + [ProjectType.PAM]: { label: "Project", icon: ProjectIcon }, + [ProjectType.SecretScanning]: { label: "Project", icon: ProjectIcon }, + namespace: { label: "Sub-Organization", icon: SubOrgIcon }, + instance: { label: "Server", icon: InstanceIcon } }; -const SCOPE_VARIANT: Record, BadgeProps["variant"]> = { +const SCOPE_VARIANT: Record, TBadgeProps["variant"]> = { org: "org", [ProjectType.SecretManager]: "project", [ProjectType.CertificateManager]: "project", @@ -36,8 +41,8 @@ const SCOPE_VARIANT: Record, BadgeProps["variant"]> [ProjectType.KMS]: "project", [ProjectType.PAM]: "project", [ProjectType.SecretScanning]: "project", - namespace: "namespace", - instance: "instance" + namespace: "sub-org", + instance: "neutral" }; export const PageHeader = ({ title, description, children, className, scope }: Props) => ( @@ -47,7 +52,7 @@ export const PageHeader = ({ title, description, children, className, scope }: P

{title}

{scope && ( - + {createElement(SCOPE_NAME[scope].icon)} {SCOPE_NAME[scope].label} )} diff --git a/frontend/src/components/v2/Select/Select.tsx b/frontend/src/components/v2/Select/Select.tsx index 3954b8b20..99e83823e 100644 --- a/frontend/src/components/v2/Select/Select.tsx +++ b/frontend/src/components/v2/Select/Select.tsx @@ -3,6 +3,7 @@ import { IconProp } from "@fortawesome/fontawesome-svg-core"; import { faCaretDown, faCaretUp, faCheck } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import * as SelectPrimitive from "@radix-ui/react-select"; +import { LucideIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { Spinner } from "../Spinner"; @@ -19,6 +20,7 @@ type Props = { icon?: IconProp; isMulti?: boolean; iconClassName?: string; + LucideIcon?: LucideIcon; dropdownContainerStyle?: React.CSSProperties; side?: SelectPrimitive.SelectContentProps["side"]; }; @@ -39,6 +41,7 @@ export const Select = forwardRef( iconClassName, dropdownContainerStyle, side, + LucideIcon: Lucide, ...props }, ref @@ -65,6 +68,7 @@ export const Select = forwardRef( >
{props.icon && } + {Lucide && }
diff --git a/frontend/src/components/v2/index.tsx b/frontend/src/components/v2/index.tsx index 8019c3589..cb4430aa4 100644 --- a/frontend/src/components/v2/index.tsx +++ b/frontend/src/components/v2/index.tsx @@ -2,7 +2,6 @@ export * from "./AccessRestrictedBanner"; export * from "./Accordion"; export * from "./Alert"; -export * from "./Badge"; export * from "./Breadcrumb"; export * from "./Button"; export * from "./Card"; diff --git a/frontend/src/components/v3/generic/Badge/Badge.stories.tsx b/frontend/src/components/v3/generic/Badge/Badge.stories.tsx index da0743a66..4cbf955f9 100644 --- a/frontend/src/components/v3/generic/Badge/Badge.stories.tsx +++ b/frontend/src/components/v3/generic/Badge/Badge.stories.tsx @@ -1,9 +1,9 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { Link } from "@tanstack/react-router"; import { + AlertTriangleIcon, + AsteriskIcon, BanIcon, - BoxesIcon, - BoxIcon, CheckIcon, ChevronsUpDownIcon, CircleXIcon, @@ -11,9 +11,11 @@ import { GlobeIcon, InfoIcon, RadarIcon, - TriangleAlertIcon + TriangleAlertIcon, + UserIcon } from "lucide-react"; +import { OrgIcon, ProjectIcon, SubOrgIcon } from "../../platform"; import { Badge } from "./Badge"; /** @@ -69,7 +71,29 @@ export const Neutral: Story = { parameters: { docs: { description: { - story: "Use this variant when indicating neutral or disabled states." + story: + "Use this variant when indicating neutral or disabled states or when linking to external documents." + } + } + } +}; + +export const Ghost: Story = { + name: "Variant: Ghost", + args: { + variant: "ghost", + children: ( + <> + + User + + ) + }, + parameters: { + docs: { + description: { + story: + "Use this variant when indicating a configuration or property value. Avoid using this variant as an interactive element as it is not intuitive to interact with." } } } @@ -109,8 +133,7 @@ export const Info: Story = { parameters: { docs: { description: { - story: - "Use this variant when indicating informational states or linking to external references." + story: "Use this variant when indicating informational states." } } } @@ -162,7 +185,7 @@ export const Organization: Story = { variant: "org", children: ( <> - + Organization ) @@ -182,7 +205,7 @@ export const SubOrganization: Story = { variant: "sub-org", children: ( <> - + Sub-Organization ) @@ -202,7 +225,7 @@ export const Project: Story = { variant: "project", children: ( <> - + Project ) @@ -283,10 +306,11 @@ export const AsButton: Story = { export const IsTruncatable: Story = { name: "Example: isTruncatable", args: { + variant: "org", isTruncatable: true, children: ( <> - + Infisical Infrastructure ) @@ -295,7 +319,7 @@ export const IsTruncatable: Story = { docs: { description: { story: - "Use the `isTruncatable` prop with a `span` tag wrapping the text content to support truncation." + "Use the `isTruncatable` prop with a `span` tag wrapping the text content to support truncation. Parent `div` should have a fixed width and `flex` class." } } }, @@ -305,3 +329,48 @@ export const IsTruncatable: Story = {
) }; + +export const IsSquare: Story = { + name: "Example: isSquare", + args: { + variant: "danger", + isSquare: true, + children: + }, + parameters: { + docs: { + description: { + story: + "Use the `isSquare` prop when displaying a squared badge with 1-2 character text or only an icon." + } + } + } +}; + +export const IsFullWidth: Story = { + name: "Example: isFullWidth", + args: { + variant: "neutral", + isFullWidth: true, + + children: ( + <> + + Secret Value + + ) + }, + parameters: { + docs: { + description: { + story: + "Use the `isFullWidth` prop to expand the badges width to fill it's parent container." + } + } + }, + decorators: (Story) => ( +
+ +
+ ) +}; diff --git a/frontend/src/components/v3/generic/Badge/Badge.tsx b/frontend/src/components/v3/generic/Badge/Badge.tsx index cc66806bc..f94bff5f2 100644 --- a/frontend/src/components/v3/generic/Badge/Badge.tsx +++ b/frontend/src/components/v3/generic/Badge/Badge.tsx @@ -6,30 +6,37 @@ import { cn } from "@app/components/v3/utils"; const badgeVariants = cva( [ - "select-none items-center rounded-sm px-1.5 py-0.5 text-xs", - "gap-x-1 [a&,button&]:cursor-pointer inline-flex", - "[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:stroke-[2.25] [&>svg]:size-3", + "select-none items-center align-middle rounded-sm h-4.5 px-1.5 text-xs", + "gap-x-1 [a&,button&]:cursor-pointer inline-flex font-normal", + "[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:stroke-[2.25] [&_svg:not([class*='size-'])]:size-3", "transition duration-200 ease-in-out" ], { variants: { isTruncatable: { true: "[&>span,&>p]:truncate min-w-0", - false: "w-fit shrink-0 whitespace-nowrap overflow-hidden" + false: "w-fit shrink-0 min-w-fit whitespace-nowrap overflow-hidden" + }, + isFullWidth: { + true: "w-full justify-center" + }, + isSquare: { + true: "w-4.5 justify-center px-0.5" }, variant: { - neutral: "bg-neutral/30 text-neutral [a&,button&]:hover:bg-neutral/40", - success: "bg-success/30 text-success [a&,button&]:hover:bg-success/40", - info: "bg-info/30 text-info [a&,button&]:hover:bg-info/40", - warning: "bg-warning/30 text-warning [a&,button&]:hover:bg-warning/40", - danger: "bg-danger/30 text-danger [a&,button&]:hover:bg-danger/40", - project: "bg-project/30 text-project [a&,button&]:hover:bg-project/40", - org: "bg-org/30 text-org [a&,button&]:hover:bg-org/40", - "sub-org": "bg-sub-org/30 text-sub-org [a&,button&]:hover:bg-sub-org/40" + ghost: "text-mineshaft-200 gap-x-2", + neutral: "bg-neutral/25 text-neutral [a&,button&]:hover:bg-neutral/35", + success: "bg-success/25 text-success [a&,button&]:hover:bg-success/35", + info: "bg-info/25 text-info [a&,button&]:hover:bg-info/35", + warning: "bg-warning/25 text-warning [a&,button&]:hover:bg-warning/35", + danger: "bg-danger/25 text-danger [a&,button&]:hover:bg-danger/35", + project: "bg-project/25 text-project [a&,button&]:hover:bg-project/35", + org: "bg-org/25 text-org [a&,button&]:hover:bg-org/35", + "sub-org": "bg-sub-org/25 text-sub-org [a&,button&]:hover:bg-sub-org/35" } }, defaultVariants: { - variant: "success" + variant: "neutral" } } ); @@ -37,16 +44,28 @@ const badgeVariants = cva( type TBadgeProps = VariantProps & React.ComponentProps<"span"> & { asChild?: boolean; + variant: NonNullable["variant"]>; // TODO: REMOVE }; const Badge = forwardRef( - ({ className, variant, asChild = false, isTruncatable = false, ...props }, ref): JSX.Element => { + ( + { + className, + variant, + asChild = false, + isTruncatable = false, + isFullWidth = false, + isSquare = false, + ...props + }, + ref + ): JSX.Element => { const Comp = asChild ? Slot : "span"; return ( ); diff --git a/frontend/src/components/v3/index.ts b/frontend/src/components/v3/index.ts index e69de29bb..1b74c0e26 100644 --- a/frontend/src/components/v3/index.ts +++ b/frontend/src/components/v3/index.ts @@ -0,0 +1,2 @@ +export * from "./generic"; +export * from "./platform"; diff --git a/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.stories.tsx b/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.stories.tsx new file mode 100644 index 000000000..bd746532e --- /dev/null +++ b/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.stories.tsx @@ -0,0 +1,24 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; + +import { DocumentationLinkBadge } from "./DocumentationLinkBadge"; + +/** + * The documentation link badge is a re-usable component to link to Infisical documentation references. + */ +const meta = { + title: "Platform/Documentation Link Badge", + component: DocumentationLinkBadge, + parameters: { + layout: "centered" + }, + tags: ["autodocs"], + argTypes: {}, + args: { href: "https://infisical.com/docs/documentation/getting-started/introduction" } +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + name: "Example: Default" +}; diff --git a/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.tsx b/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.tsx new file mode 100644 index 000000000..b847f93ae --- /dev/null +++ b/frontend/src/components/v3/platform/DocumentationLinkBadge/DocumentationLinkBadge.tsx @@ -0,0 +1,18 @@ +import { BookOpenIcon } from "lucide-react"; + +import { Badge } from "@app/components/v3"; + +type TDocumentationLinkBadgeProps = { + href: string; +}; + +export function DocumentationLinkBadge({ href }: TDocumentationLinkBadgeProps) { + return ( + + + + Documentation + + + ); +} diff --git a/frontend/src/components/v3/platform/DocumentationLinkBadge/index.ts b/frontend/src/components/v3/platform/DocumentationLinkBadge/index.ts new file mode 100644 index 000000000..aed3c2244 --- /dev/null +++ b/frontend/src/components/v3/platform/DocumentationLinkBadge/index.ts @@ -0,0 +1 @@ +export * from "./DocumentationLinkBadge"; diff --git a/frontend/src/components/v3/platform/ScopeIcons.tsx b/frontend/src/components/v3/platform/ScopeIcons.tsx new file mode 100644 index 000000000..8f8712319 --- /dev/null +++ b/frontend/src/components/v3/platform/ScopeIcons.tsx @@ -0,0 +1,8 @@ +import { BoxesIcon, BoxIcon, Building2Icon, ServerIcon } from "lucide-react"; + +const InstanceIcon = ServerIcon; +const OrgIcon = Building2Icon; +const SubOrgIcon = BoxesIcon; +const ProjectIcon = BoxIcon; + +export { InstanceIcon, OrgIcon, ProjectIcon, SubOrgIcon }; diff --git a/frontend/src/components/v3/platform/index.ts b/frontend/src/components/v3/platform/index.ts new file mode 100644 index 000000000..ab5839618 --- /dev/null +++ b/frontend/src/components/v3/platform/index.ts @@ -0,0 +1,2 @@ +export * from "./DocumentationLinkBadge"; +export * from "./ScopeIcons"; diff --git a/frontend/src/helpers/policies.ts b/frontend/src/helpers/policies.ts index d798d3c10..58feaf703 100644 --- a/frontend/src/helpers/policies.ts +++ b/frontend/src/helpers/policies.ts @@ -1,20 +1,20 @@ -import { IconDefinition } from "@fortawesome/free-brands-svg-icons"; -import { faArrowRightToBracket, faEdit } from "@fortawesome/free-solid-svg-icons"; +import { LucideIcon, UserCheckIcon, UserPenIcon } from "lucide-react"; +import { TBadgeProps } from "@app/components/v3"; import { PolicyType } from "@app/hooks/api/policies/enums"; export const policyDetails: Record< PolicyType, - { name: string; className: string; icon: IconDefinition } + { name: string; variant: TBadgeProps["variant"]; Icon: LucideIcon } > = { [PolicyType.AccessPolicy]: { - className: "bg-green/20 text-green", + variant: "ghost", name: "Access Policy", - icon: faArrowRightToBracket + Icon: UserCheckIcon }, [PolicyType.ChangePolicy]: { - className: "bg-yellow/20 text-yellow", + variant: "ghost", name: "Change Policy", - icon: faEdit + Icon: UserPenIcon } }; diff --git a/frontend/src/helpers/secretScanningV2.ts b/frontend/src/helpers/secretScanningV2.ts index 4e88b8482..ee5226611 100644 --- a/frontend/src/helpers/secretScanningV2.ts +++ b/frontend/src/helpers/secretScanningV2.ts @@ -1,10 +1,6 @@ -import { - faBan, - faCheck, - faMagnifyingGlassMinus, - faWarning -} from "@fortawesome/free-solid-svg-icons"; +import { AlertTriangleIcon, BanIcon, CheckIcon, LucideIcon, SearchSlashIcon } from "lucide-react"; +import { TBadgeProps } from "@app/components/v3"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { SecretScanningDataSource, @@ -74,12 +70,28 @@ export const RESOURCE_DESCRIPTION_HELPER: Record< } }; -export const SECRET_SCANNING_FINDING_STATUS_ICON_MAP = { - [SecretScanningFindingStatus.Resolved]: { icon: faCheck, className: "text-green" }, - [SecretScanningFindingStatus.Unresolved]: { icon: faWarning, className: "text-yellow" }, - [SecretScanningFindingStatus.Ignore]: { icon: faBan, className: "text-mineshaft-400" }, +export const SECRET_SCANNING_FINDING_STATUS_MAP: Record< + SecretScanningFindingStatus, + { Icon: LucideIcon; variant: TBadgeProps["variant"]; className: string } +> = { + [SecretScanningFindingStatus.Resolved]: { + Icon: CheckIcon, + variant: "success", + className: "text-success" + }, + [SecretScanningFindingStatus.Unresolved]: { + Icon: AlertTriangleIcon, + variant: "warning", + className: "text-warning" + }, + [SecretScanningFindingStatus.Ignore]: { + Icon: BanIcon, + variant: "neutral", + className: "text-neutral" + }, [SecretScanningFindingStatus.FalsePositive]: { - icon: faMagnifyingGlassMinus, - className: "text-mineshaft-400" + Icon: SearchSlashIcon, + variant: "neutral", + className: "text-neutral" } }; diff --git a/frontend/src/hooks/api/ca/constants.tsx b/frontend/src/hooks/api/ca/constants.tsx index 778656da4..16a350dbd 100644 --- a/frontend/src/hooks/api/ca/constants.tsx +++ b/frontend/src/hooks/api/ca/constants.tsx @@ -53,6 +53,6 @@ export const getCaStatusBadgeVariant = (status: CaStatus | SshCaStatus | SshCert case CaStatus.DISABLED: return "danger"; default: - return "primary"; + return "warning"; } }; diff --git a/frontend/src/hooks/api/pam/types/index.ts b/frontend/src/hooks/api/pam/types/index.ts index 23cdf389d..1b1890cbd 100644 --- a/frontend/src/hooks/api/pam/types/index.ts +++ b/frontend/src/hooks/api/pam/types/index.ts @@ -1,9 +1,9 @@ import { PamResourceType, PamSessionStatus } from "../enums"; -import { TPostgresAccount, TPostgresResource } from "./postgres-resource"; import { TMySQLAccount, TMySQLResource } from "./mysql-resource"; +import { TPostgresAccount, TPostgresResource } from "./postgres-resource"; -export * from "./postgres-resource"; export * from "./mysql-resource"; +export * from "./postgres-resource"; export type TPamResource = TPostgresResource | TMySQLResource; diff --git a/frontend/src/hooks/api/pkiSubscriber/constants.tsx b/frontend/src/hooks/api/pkiSubscriber/constants.tsx index 1de5e9ddb..768df9f52 100644 --- a/frontend/src/hooks/api/pkiSubscriber/constants.tsx +++ b/frontend/src/hooks/api/pkiSubscriber/constants.tsx @@ -15,6 +15,6 @@ export const getPkiSubscriberStatusBadgeVariant = (status: PkiSubscriberStatus) case PkiSubscriberStatus.DISABLED: return "danger"; default: - return "primary"; + return "warning"; } }; diff --git a/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx b/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx index f9ef51133..014c77baa 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NavBar/Navbar.tsx @@ -7,15 +7,12 @@ import { faCaretDown, faCheck, faChevronRight, - faCubes, faEnvelope, faExclamationTriangle, - faGlobe, faInfinity, faInfo, faInfoCircle, faPlus, - faServer, faSignOut, faToolbox, faUser, @@ -30,7 +27,6 @@ import { Mfa } from "@app/components/auth/Mfa"; import { createNotification } from "@app/components/notifications"; import SecurityClient from "@app/components/utilities/SecurityClient"; import { - Badge, BreadcrumbContainer, Button, DropdownMenu, @@ -46,6 +42,7 @@ import { TBreadcrumbFormat, Tooltip } from "@app/components/v2"; +import { Badge, InstanceIcon, OrgIcon, SubOrgIcon } from "@app/components/v3"; import { envConfig } from "@app/config/env"; import { useOrganization, useSubscription, useUser } from "@app/context"; import { isInfisicalCloud } from "@app/helpers/platform"; @@ -271,9 +268,7 @@ export const Navbar = () => { to="/admin" className="group flex cursor-pointer items-center gap-2 text-sm text-white transition-all duration-100 hover:text-primary" > -
- -
+
Server Console

/

@@ -288,24 +283,31 @@ export const Navbar = () => {
{ - navigate({ - to: "/organization/projects", - search: (search) => ({ ...search, subOrganization: undefined }) - }); - if (isSubOrganization) { - await router.invalidate({ sync: true }).catch(() => null); - } - }} + asChild variant="org" + isTruncatable + // TODO(scott): either add badge size/style variant or create designated component for namespace/org nav bar className={twMerge( - "max-w-full min-w-0 cursor-pointer text-sm", + "gap-x-1.5 text-sm", (!isOrgScope || isSubOrganization) && - "bg-transparent text-mineshaft-200 hover:bg-transparent hover:underline" + "bg-transparent text-mineshaft-200 hover:!bg-transparent hover:underline [&>svg]:!text-org" )} > - -

{currentOrg?.name}

+
{getPlan(subscription)} @@ -443,19 +445,22 @@ export const Navbar = () => { <>

/

- - - -

{currentOrg.subOrganization.name}

-
- + svg]:!text-sub-org" + )} + > + + + {currentOrg.subOrganization.name} + +
{ )} {user.superAdmin && !location.pathname.startsWith("/admin") && ( - + Server Console )} diff --git a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx index 72430fec6..c26333332 100644 --- a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx +++ b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx @@ -3,7 +3,6 @@ import { faStar } from "@fortawesome/free-regular-svg-icons"; import { faCaretDown, faCheck, - faCube, faMagnifyingGlass, faPlus, faStar as faSolidStar @@ -16,7 +15,6 @@ import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { NewProjectModal } from "@app/components/projects"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -25,6 +23,7 @@ import { Input, Tooltip } from "@app/components/v2"; +import { Badge, ProjectIcon } from "@app/components/v3"; import { OrgPermissionActions, OrgPermissionSubjects, @@ -120,11 +119,9 @@ export const ProjectSelect = () => {

{currentWorkspace?.name}

- - - - {currentWorkspace.type ? PROJECT_TYPE_NAME[currentWorkspace.type] : "Project"} - + + + {currentWorkspace.type ? PROJECT_TYPE_NAME[currentWorkspace.type] : "Project"} diff --git a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx index f3737a2dc..47a2333c7 100644 --- a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx +++ b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx @@ -4,7 +4,8 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Link, Outlet, useLocation } from "@tanstack/react-router"; import { motion } from "framer-motion"; -import { Badge, Tab, TabList, Tabs } from "@app/components/v2"; +import { Tab, TabList, Tabs } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProject, useProjectPermission } from "@app/context"; import { useGetAccessRequestsCount, @@ -88,7 +89,7 @@ export const SecretManagerLayout = () => { {Boolean( secretApprovalReqCount?.open || accessApprovalRequestCount?.pendingCount ) && ( - + {pendingRequestsCount} )} diff --git a/frontend/src/layouts/SecretScanningLayout/SecretScanningLayout.tsx b/frontend/src/layouts/SecretScanningLayout/SecretScanningLayout.tsx index 227f7ae70..0a1fd14f4 100644 --- a/frontend/src/layouts/SecretScanningLayout/SecretScanningLayout.tsx +++ b/frontend/src/layouts/SecretScanningLayout/SecretScanningLayout.tsx @@ -1,7 +1,8 @@ import { Link, Outlet, useLocation } from "@tanstack/react-router"; import { motion } from "framer-motion"; -import { Badge, Tab, TabList, Tabs } from "@app/components/v2"; +import { Tab, TabList, Tabs } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionSub, useProject, @@ -66,7 +67,7 @@ export const SecretScanningLayout = () => { Findings {Boolean(unresolvedFindings) && ( - + {unresolvedFindings} )} diff --git a/frontend/src/pages/admin/AccessManagementPage/components/ServerAdminsTable.tsx b/frontend/src/pages/admin/AccessManagementPage/components/ServerAdminsTable.tsx index 5b34aa029..7e207fbc5 100644 --- a/frontend/src/pages/admin/AccessManagementPage/components/ServerAdminsTable.tsx +++ b/frontend/src/pages/admin/AccessManagementPage/components/ServerAdminsTable.tsx @@ -7,16 +7,15 @@ import { faTrash, faUsers, faUserXmark, - faWarning, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { AlertTriangleIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { - Badge, Button, Checkbox, DeleteActionModal, @@ -38,6 +37,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useSubscription, useUser } from "@app/context"; import { getUserTablePreference, @@ -451,7 +451,7 @@ export const ServerAdminsTable = () => { const email = user.email ?? user.username; return (
  • -
    +

    {user.firstName || user.lastName ? ( <> @@ -464,15 +464,10 @@ export const ServerAdminsTable = () => {

    {userId === user.id && ( -
    - - - Deleting Yourself - -
    + + + Deleting Yourself +
    )}
    diff --git a/frontend/src/pages/admin/CachingPage/components/CachingPageForm.tsx b/frontend/src/pages/admin/CachingPage/components/CachingPageForm.tsx index cac64d135..fbf956b7b 100644 --- a/frontend/src/pages/admin/CachingPage/components/CachingPageForm.tsx +++ b/frontend/src/pages/admin/CachingPage/components/CachingPageForm.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import { faRotate } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { RefreshCwIcon } from "lucide-react"; import { createNotification } from "@app/components/notifications"; -import { Badge, Button, DeleteActionModal } from "@app/components/v2"; +import { Button, DeleteActionModal } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useUser } from "@app/context"; import { usePopUp } from "@app/hooks"; import { useInvalidateCache } from "@app/hooks/api"; @@ -62,11 +62,8 @@ export const CachingPageForm = () => {
    Secrets Cache {isInvalidating && ( - - + + Invalidating Cache )} diff --git a/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx b/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx index 69f4139a2..238671d40 100644 --- a/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx +++ b/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx @@ -1,13 +1,13 @@ import { useCallback } from "react"; import { Controller, useForm } from "react-hook-form"; -import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; +import { InfoIcon } from "lucide-react"; import { z } from "zod"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; -import { Badge, Button, FormControl, Select, SelectItem, Tooltip } from "@app/components/v2"; +import { Button, FormControl, Select, SelectItem, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useServerConfig, useSubscription } from "@app/context"; import { usePopUp } from "@app/hooks"; import { @@ -132,12 +132,10 @@ export const EncryptionPageForm = () => { {config.fipsEnabled && ( -
    - - FIPS Mode: Enabled - - -
    + + FIPS Mode: Enabled + +
    )}
    diff --git a/frontend/src/pages/admin/EnvironmentPage/components/EnvironmentPageForm.tsx b/frontend/src/pages/admin/EnvironmentPage/components/EnvironmentPageForm.tsx index 59df496af..5f74593a3 100644 --- a/frontend/src/pages/admin/EnvironmentPage/components/EnvironmentPageForm.tsx +++ b/frontend/src/pages/admin/EnvironmentPage/components/EnvironmentPageForm.tsx @@ -1,8 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { Control, Controller, useForm, useWatch } from "react-hook-form"; import { - faArrowUpRightFromSquare, - faBookOpen, faChevronRight, faExclamationTriangle, faMagnifyingGlass @@ -14,6 +12,7 @@ import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Input, SecretInput, Tooltip } from "@app/components/v2"; import { HighlightText } from "@app/components/v2/HighlightText"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { useGetEnvOverrides, useUpdateServerConfig } from "@app/hooks/api"; type TForm = Record; @@ -213,22 +212,9 @@ export const EnvironmentPageForm = () => { >
    -
    +

    Overrides

    - -
    - - Docs - -
    -
    +

    Override specific environment variables. After saving, it may take up to 5 minutes for diff --git a/frontend/src/pages/admin/ResourceOverviewPage/components/MachineIdentitiesTable.tsx b/frontend/src/pages/admin/ResourceOverviewPage/components/MachineIdentitiesTable.tsx index c493fe24d..9929d7500 100644 --- a/frontend/src/pages/admin/ResourceOverviewPage/components/MachineIdentitiesTable.tsx +++ b/frontend/src/pages/admin/ResourceOverviewPage/components/MachineIdentitiesTable.tsx @@ -7,10 +7,10 @@ import { faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { ServerCogIcon } from "lucide-react"; import { createNotification } from "@app/components/notifications"; import { - Badge, DeleteActionModal, DropdownMenu, DropdownMenuContent, @@ -29,6 +29,7 @@ import { THead, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { getUserTablePreference, PreferenceKey, @@ -110,7 +111,8 @@ const IdentityPanelTable = ({ {name} {isInstanceAdmin && ( - + + Server Admin )} diff --git a/frontend/src/pages/admin/ResourceOverviewPage/components/OrganizationsTable.tsx b/frontend/src/pages/admin/ResourceOverviewPage/components/OrganizationsTable.tsx index 9405505c8..fbb9462d0 100644 --- a/frontend/src/pages/admin/ResourceOverviewPage/components/OrganizationsTable.tsx +++ b/frontend/src/pages/admin/ResourceOverviewPage/components/OrganizationsTable.tsx @@ -3,7 +3,6 @@ import { faArrowDown, faArrowUp, faBuilding, - faCircleQuestion, faEllipsisV, faEnvelope, faEye, @@ -19,11 +18,11 @@ import { } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; +import { CircleQuestionMarkIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { - Badge, Button, DeleteActionModal, DropdownMenu, @@ -46,6 +45,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useUser } from "@app/context"; import { OrgMembershipRole } from "@app/helpers/roles"; import { @@ -295,15 +295,17 @@ const ViewMembersModalContent = ({ )}

    - - -

    {member.role.replace("-", " ")}

    - {Boolean(member.roleId) && ( - - - - )} -
    + +
    + + + {member.role.replace("-", " ")} + {Boolean(member.roleId) && } + + +
    diff --git a/frontend/src/pages/admin/ResourceOverviewPage/components/UserIdentitiesTable.tsx b/frontend/src/pages/admin/ResourceOverviewPage/components/UserIdentitiesTable.tsx index 7b5b2c3d5..05d07d426 100644 --- a/frontend/src/pages/admin/ResourceOverviewPage/components/UserIdentitiesTable.tsx +++ b/frontend/src/pages/admin/ResourceOverviewPage/components/UserIdentitiesTable.tsx @@ -9,16 +9,15 @@ import { faUsers, faUserShield, faUserXmark, - faWarning, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { AlertTriangleIcon, UserCogIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { - Badge, Button, Checkbox, DeleteActionModal, @@ -41,6 +40,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useSubscription, useUser } from "@app/context"; import { getUserTablePreference, @@ -218,7 +218,8 @@ const UserPanelTable = ({ {name ?? Not Set}

    {superAdmin && ( - + + Server Admin )} @@ -548,7 +549,7 @@ export const UserIdentitiesTable = () => { const email = user.email ?? user.username; return (
  • -
    +

    {user.firstName || user.lastName ? ( <> @@ -561,15 +562,10 @@ export const UserIdentitiesTable = () => {

    {userId === user.id && ( -
    - - - Deleting Yourself - -
    + + + Deleting Yourself +
    )}
    diff --git a/frontend/src/pages/cert-manager/CertAuthDetailsByIDPage/components/CaCertificatesSection/CaCertificatesTable.tsx b/frontend/src/pages/cert-manager/CertAuthDetailsByIDPage/components/CaCertificatesSection/CaCertificatesTable.tsx index e9f65c4f6..c04b8525a 100644 --- a/frontend/src/pages/cert-manager/CertAuthDetailsByIDPage/components/CaCertificatesSection/CaCertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/CertAuthDetailsByIDPage/components/CaCertificatesSection/CaCertificatesTable.tsx @@ -7,7 +7,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -22,6 +21,7 @@ import { THead, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; import { useGetCaCerts } from "@app/hooks/api"; @@ -60,7 +60,7 @@ export const CaCertificatesTable = ({ caId }: Props) => {
    CA Certificate {caCert.version} {isLastItem && ( - + Current )} diff --git a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/CaTable.tsx b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/CaTable.tsx index 81fce98c6..09fe39af6 100644 --- a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/CaTable.tsx +++ b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/CaTable.tsx @@ -6,7 +6,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -22,6 +21,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import { CaStatus, CaType, useListCasByTypeAndProjectId } from "@app/hooks/api"; import { diff --git a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaTable.tsx b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaTable.tsx index a948473e8..0f3fca6cd 100644 --- a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaTable.tsx +++ b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaTable.tsx @@ -10,7 +10,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -26,6 +25,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import { CaStatus, CaType, useListExternalCasByProjectId } from "@app/hooks/api"; import { caStatusToNameMap, getCaStatusBadgeVariant } from "@app/hooks/api/ca/constants"; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx index cd0b3fa5a..8b26e2d1a 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx @@ -13,7 +13,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -30,6 +29,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionCertificateActions, ProjectPermissionSub, diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.utils.ts b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.utils.ts index 93b408bbe..2ac7ec9ce 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.utils.ts +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.utils.ts @@ -5,13 +5,13 @@ export const getCertValidUntilBadgeDetails = (notAfter: string) => { const notAfterDate = new Date(notAfter).getTime(); const diffInMs = notAfterDate - currentDate; - let variant: "success" | "primary" | "danger" = "success"; + let variant: "success" | "warning" | "danger" = "success"; let label = "Healthy"; if (diffInMs > ms("60d")) { variant = "success"; } else if (diffInMs > ms("30d")) { - variant = "primary"; + variant = "warning"; } else { variant = "danger"; } diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx index eb16166fc..1c5bff98c 100644 --- a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx +++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx @@ -1,7 +1,6 @@ import { useCallback, useMemo } from "react"; import { subject } from "@casl/ability"; import { - faBan, faCalendarCheck, faCheck, faCopy, @@ -19,6 +18,7 @@ import { import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { format } from "date-fns"; +import { BanIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; @@ -29,7 +29,6 @@ import { PkiSyncStatusBadge } from "@app/components/pki-syncs"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -39,6 +38,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ROUTE_PATHS } from "@app/const/routes"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types"; @@ -172,10 +172,7 @@ export const PkiSyncRow = ({
    - + Source Deleted @@ -234,12 +231,10 @@ export const PkiSyncRow = ({ className="text-xs" content="Auto-Sync is disabled. Certificate changes in the PKI subscriber will not be automatically synced to the destination." > -
    - - - {!syncStatus && "Auto-Sync Disabled"} - -
    + + + {!syncStatus && "Auto-Sync Disabled"} + )} {syncOption?.canImportCertificates && } diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx index 564eeb789..1c1141382 100644 --- a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx +++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx @@ -1,11 +1,12 @@ import { useCallback, useEffect, useMemo } from "react"; -import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { ProjectPermissionCan } from "@app/components/permissions"; import { CreatePkiSyncModal } from "@app/components/pki-syncs"; import { Button, Spinner } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { ROUTE_PATHS } from "@app/const/routes"; import { ProjectPermissionSub, useProject } from "@app/context"; import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types"; @@ -64,21 +65,10 @@ export const PkiSyncsTab = () => {
    -

    Certificate Syncs

    - -
    - - Docs - -
    -
    +
    +

    Certificate Syncs

    + +

    Use App Connections to sync certificates to third-party services. diff --git a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx index d3533d71d..129af29d3 100644 --- a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx @@ -7,7 +7,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -24,6 +23,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionPkiSubscriberActions, ProjectPermissionSub, @@ -93,7 +93,7 @@ export const PkiSubscriberCertificatesTable = ({ subscriberName, handlePopUpOpen } if (daysUntilExpiry < 30) { - return Expiring Soon; + return Expiring Soon; } return Valid; diff --git a/frontend/src/pages/cert-manager/PkiSubscribersPage/components/PkiSubscribersTable.tsx b/frontend/src/pages/cert-manager/PkiSubscribersPage/components/PkiSubscribersTable.tsx index d28c2d3a2..89dfd5f02 100644 --- a/frontend/src/pages/cert-manager/PkiSubscribersPage/components/PkiSubscribersTable.tsx +++ b/frontend/src/pages/cert-manager/PkiSubscribersPage/components/PkiSubscribersTable.tsx @@ -11,7 +11,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -27,6 +26,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionPkiSubscriberActions, ProjectPermissionSub, diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx index 462678280..bb8e9d02a 100644 --- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx +++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx @@ -1,7 +1,6 @@ import { useCallback } from "react"; import { subject } from "@casl/ability"; import { - faBan, faCheck, faCopy, faDownload, @@ -15,6 +14,7 @@ import { } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; +import { BanIcon, RefreshCwIcon } from "lucide-react"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; @@ -26,7 +26,6 @@ import { PkiSyncRemoveStatusBadge } from "@app/components/pki-syncs"; import { - Badge, Button, DropdownMenu, DropdownMenuContent, @@ -35,6 +34,7 @@ import { IconButton, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ROUTE_PATHS } from "@app/const/routes"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types"; @@ -136,24 +136,19 @@ export const PkiSyncActionTriggers = ({ pkiSync }: Props) => { {syncOption?.canImportCertificates && } {pkiSync.isAutoSyncEnabled ? ( - - - Auto-Sync Enabled + + + Auto-Sync Enabled ) : ( -

    - - - Auto-Sync Disabled - -
    + + + Auto-Sync Disabled + )}
    diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncOptionsSection/PkiSyncOptionsSection.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncOptionsSection/PkiSyncOptionsSection.tsx index 3af7bf189..b6365f1cd 100644 --- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncOptionsSection/PkiSyncOptionsSection.tsx +++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncOptionsSection/PkiSyncOptionsSection.tsx @@ -4,7 +4,8 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { ProjectPermissionCan } from "@app/components/permissions"; import { GenericFieldLabel } from "@app/components/secret-syncs"; -import { Badge, IconButton } from "@app/components/v2"; +import { IconButton } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types"; import { TPkiSync } from "@app/hooks/api/pkiSyncs"; diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncSourceSection.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncSourceSection.tsx index 5885795e2..c9dc041df 100644 --- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncSourceSection.tsx +++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncSourceSection.tsx @@ -1,10 +1,12 @@ /* eslint-disable jsx-a11y/label-has-associated-control */ import { subject } from "@casl/ability"; -import { faEdit, faTriangleExclamation } from "@fortawesome/free-solid-svg-icons"; +import { faEdit } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { AlertTriangleIcon } from "lucide-react"; import { ProjectPermissionCan } from "@app/components/permissions"; -import { Badge, IconButton, Tooltip } from "@app/components/v2"; +import { IconButton, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types"; import { TPkiSync } from "@app/hooks/api/pkiSyncs"; @@ -36,15 +38,10 @@ export const PkiSyncSourceSection = ({ pkiSync, onEditSource }: Props) => {
    {!subscriberId && ( -
    - - - Source Deleted - -
    + + + Source Deleted +
    )} diff --git a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/ProfileRow.tsx b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/ProfileRow.tsx index 27a1e7cd1..ab7eb549e 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/ProfileRow.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/ProfileRow.tsx @@ -12,7 +12,6 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -21,6 +20,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProjectPermission } from "@app/context"; import { ProjectPermissionActions, @@ -45,42 +45,26 @@ const MetricsBadges = ({ }; }) => { if (!metrics) { - return ( - - No metrics - - ); + return No metrics; } if (metrics.totalCertificates === 0) { - return ( - - No certificates - - ); + return No certificates; } return ( <> {metrics.activeCertificates > 0 && ( - - {metrics.activeCertificates} active - + {metrics.activeCertificates} active )} {metrics.expiringCertificates > 0 && ( - - {metrics.expiringCertificates} expiring - + {metrics.expiringCertificates} expiring )} {metrics.expiredCertificates > 0 && ( - - {metrics.expiredCertificates} expired - + {metrics.expiredCertificates} expired )} {metrics.revokedCertificates > 0 && ( - - {metrics.revokedCertificates} revoked - + {metrics.revokedCertificates} revoked )} ); @@ -135,7 +119,7 @@ export const ProfileRow = ({ profile, onEditProfile, onDeleteProfile }: Props) = const getEnrollmentTypeBadge = (enrollmentType: string) => { const config = { api: { variant: "success" as const, label: "API" }, - est: { variant: "primary" as const, label: "EST" } + est: { variant: "warning" as const, label: "EST" } } as const; const configKey = Object.keys(config).includes(enrollmentType) diff --git a/frontend/src/pages/kms/OverviewPage/components/CmekTable.tsx b/frontend/src/pages/kms/OverviewPage/components/CmekTable.tsx index bf721edfb..a6675ea88 100644 --- a/frontend/src/pages/kms/OverviewPage/components/CmekTable.tsx +++ b/frontend/src/pages/kms/OverviewPage/components/CmekTable.tsx @@ -23,7 +23,6 @@ import { motion } from "framer-motion"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, Button, DropdownMenu, DropdownMenuContent, @@ -44,7 +43,7 @@ import { Tooltip, Tr } from "@app/components/v2"; -import { BadgeProps } from "@app/components/v2/Badge/Badge"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionCmekActions, @@ -72,7 +71,7 @@ import { DeleteCmekModal } from "./DeleteCmekModal"; const getStatusBadgeProps = ( isDisabled: boolean -): { variant: BadgeProps["variant"]; label: string } => { +): { variant: TBadgeProps["variant"]; label: string } => { if (isDisabled) { return { variant: "danger", diff --git a/frontend/src/pages/kms/OverviewPage/components/CmekVerifyModal.tsx b/frontend/src/pages/kms/OverviewPage/components/CmekVerifyModal.tsx index 4163beb5a..5c9eac072 100644 --- a/frontend/src/pages/kms/OverviewPage/components/CmekVerifyModal.tsx +++ b/frontend/src/pages/kms/OverviewPage/components/CmekVerifyModal.tsx @@ -7,7 +7,6 @@ import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { decodeBase64 } from "@app/components/utilities/cryptography/crypto"; import { - Badge, Button, FormControl, Modal, @@ -19,6 +18,7 @@ import { TextArea, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { SigningAlgorithm, TCmek, useCmekVerify } from "@app/hooks/api/cmeks"; import { isBase64 } from "@app/lib/fn/base64"; @@ -112,30 +112,22 @@ const VerifyForm = ({ cmek }: FormProps) => {
    Signature Status: - - - {signatureValid ? ( -
    -

    Valid

    -
    - ) : ( -
    -

    Invalid

    -
    - )} -
    -
    + + + {signatureValid ? "Valid" : "Invalid"} + +
    Signing Algorithm: - {signingAlgorithm} + {signingAlgorithm}
    Signature:{" "} diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx index 753ebd93c..03621f8e4 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx @@ -5,6 +5,7 @@ import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button, DeleteActionModal } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { OrgPermissionGroupActions, OrgPermissionSubjects, useSubscription } from "@app/context"; import { useDeleteGroup } from "@app/hooks/api"; import { usePopUp } from "@app/hooks/usePopUp"; @@ -57,7 +58,10 @@ export const OrgGroupsSection = () => { return (
    -

    Groups

    +
    +

    Groups

    + +
    {(isAllowed) => (
    diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx index 8e5d223ca..572de9eba 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx @@ -11,19 +11,18 @@ import { faMagnifyingGlass, faSearch, faUsers, - faUserShield, faUserSlash, faUserXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; +import { UserCogIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { LastLoginSection } from "@app/components/organization/LastLoginSection"; import { OrgPermissionCan } from "@app/components/permissions"; import { - Badge, Button, Checkbox, DropdownMenu, @@ -50,6 +49,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { OrgPermissionActions, OrgPermissionSubjects, @@ -519,17 +519,17 @@ export const OrgMembersTable = ({ -
    +

    {name ?? Not Set}

    {u.superAdmin && ( - - Server Admin - - - - + + + + Server Admin + + )} {lastLoginAuthMethod && lastLoginTime && ( { return (
    -

    - {isSubOrganization ? "Sub-" : ""}Organization Roles -

    +
    +

    + {isSubOrganization ? "Sub-" : ""}Organization Roles +

    + +
    {(isAllowed) => (
    {workspace.isMember ? ( - - - Joined + + + Joined ) : ( Expired ) : ( - + {row.encryptedSecret ? "Secret Provided" : "Pending Secret"} )} - - -
    - {row.accessType === SecretSharingAccessType.Anyone - ? "Anyone" - : "Organization Members"} -
    -
    -
    + + + {row.accessType === SecretSharingAccessType.Anyone ? "Anyone" : "Organization Members"} + + {`${format(new Date(row.createdAt), "yyyy-MM-dd - HH:mm a")}`} {row.expiresAt ? format(new Date(row.expiresAt), "yyyy-MM-dd - HH:mm a") : "-"} diff --git a/frontend/src/pages/organization/SecretSharingPage/components/ShareSecret/ShareSecretsRow.tsx b/frontend/src/pages/organization/SecretSharingPage/components/ShareSecret/ShareSecretsRow.tsx index 2394253e7..d4b40723b 100644 --- a/frontend/src/pages/organization/SecretSharingPage/components/ShareSecret/ShareSecretsRow.tsx +++ b/frontend/src/pages/organization/SecretSharingPage/components/ShareSecret/ShareSecretsRow.tsx @@ -3,7 +3,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format } from "date-fns"; import { IconButton, Td, Tooltip, Tr } from "@app/components/v2"; -import { Badge } from "@app/components/v2/Badge"; +import { Badge } from "@app/components/v3"; import { TSharedSecret } from "@app/hooks/api/secretSharing"; import { UsePopUpState } from "@app/hooks/usePopUp"; diff --git a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/AuditLogStreamHeader.tsx b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/AuditLogStreamHeader.tsx index 1d5cbc4f0..2d473892a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/AuditLogStreamHeader.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/AuditLogStreamHeader.tsx @@ -1,6 +1,6 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { AUDIT_LOG_STREAM_PROVIDER_MAP } from "@app/helpers/auditLogStreams"; import { LogProvider } from "@app/hooks/api/auditLogStreams/enums"; @@ -34,20 +34,9 @@ export const AuditLogStreamHeader = ({ provider, logStreamExists, onBack }: Prop )}
    -
    +
    {providerDetails.name} - -
    - - Docs - -
    -
    +

    {logStreamExists diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx index ef47f3195..251cebcbe 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx @@ -2,7 +2,8 @@ import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { createNotification } from "@app/components/notifications"; -import { Badge, Button, FormControl, Input, Select, SelectItem } from "@app/components/v2"; +import { Button, FormControl, Input, Select, SelectItem } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useOrganization } from "@app/context"; import { useAddExternalKms, useUpdateExternalKms } from "@app/hooks/api"; import { @@ -244,7 +245,7 @@ export const AwsKmsForm = ({ onCompleted, onCancel, kms }: Props) => { > {AWS_REGIONS.map((awsRegion) => ( - {awsRegion.name} {awsRegion.slug} + {awsRegion.name} {awsRegion.slug} ))} diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/GcpKmsForm.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/GcpKmsForm.tsx index 07711d306..610ac823e 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/GcpKmsForm.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/GcpKmsForm.tsx @@ -3,7 +3,8 @@ import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { createNotification } from "@app/components/notifications"; -import { Badge, Button, FilterableSelect, FormControl, Input } from "@app/components/v2"; +import { Button, FilterableSelect, FormControl, Input } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useOrganization } from "@app/context"; import { useAddExternalKms, @@ -71,7 +72,7 @@ const GCP_REGIONS = [ const formatOptionLabel = ({ value, label }: { value: string; label: string }) => (

    {label} - {value} + {value}
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/SSOModalHeader.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/SSOModalHeader.tsx index 8ad40ae4b..c244caa81 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/SSOModalHeader.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/SSOModalHeader.tsx @@ -1,5 +1,4 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { DocumentationLinkBadge } from "@app/components/v3"; type ProviderDetails = { label: string; @@ -24,23 +23,9 @@ export const SSOModalHeader = ({ providerDetails, isConnected }: Props) => { className="h-12 w-12 rounded-md bg-bunker-500 p-2" />
    -
    +
    {providerDetails.label} - -
    - - Docs - -
    -
    +

    {isConnected diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx index bfdd27c02..2bf8fd5d3 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx @@ -7,7 +7,6 @@ import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { - Badge, Button, DeleteActionModal, DropdownMenu, @@ -24,6 +23,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; @@ -48,7 +48,7 @@ const renderStatus = (status: WorkflowIntegrationStatus) => { } if (status === WorkflowIntegrationStatus.Pending) { - return Pending; + return Pending; } return Failed; diff --git a/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx index 8d524c41c..ee6120d09 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx @@ -1,10 +1,11 @@ import { useState } from "react"; -import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { OrgPermissionActions, OrgPermissionSubjects, useSubscription } from "@app/context"; import { TProjectTemplate } from "@app/hooks/api/projectTemplates"; import { usePopUp } from "@app/hooks/usePopUp"; @@ -33,22 +34,9 @@ export const ProjectTemplatesSection = () => { project setup

    -
    +

    Project Templates

    - -
    - - Docs - -
    -
    + - - + + {isFlatView && accountPath && ( - - + + )} {account.lastRotatedAt && ( - - + + Rotated {formatDistance(new Date(), account.lastRotatedAt)} ago )} diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamResourceOption.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamResourceOption.tsx index 06c04e019..278ac3a62 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamResourceOption.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamResourceOption.tsx @@ -3,7 +3,7 @@ import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Badge } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { PAM_RESOURCE_TYPE_MAP, PamResourceType } from "@app/hooks/api/pam"; export const PamResourceOption = ({ @@ -27,7 +27,7 @@ export const PamResourceOption = ({ <>

    {children}

    - + {`${name} - + diff --git a/frontend/src/pages/pam/PamSessionsByIDPage/components/PamSessionDetailsSection.tsx b/frontend/src/pages/pam/PamSessionsByIDPage/components/PamSessionDetailsSection.tsx index c527c2716..f53803ce8 100644 --- a/frontend/src/pages/pam/PamSessionsByIDPage/components/PamSessionDetailsSection.tsx +++ b/frontend/src/pages/pam/PamSessionsByIDPage/components/PamSessionDetailsSection.tsx @@ -1,7 +1,9 @@ -import { faBoxOpen, faCheck, faCopy, faUser } from "@fortawesome/free-solid-svg-icons"; +import { faCheck, faCopy, faUser } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { PackageOpenIcon } from "lucide-react"; -import { Badge, IconButton, Tooltip } from "@app/components/v2"; +import { IconButton, Tooltip } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useTimedReset } from "@app/hooks"; import { PAM_RESOURCE_TYPE_MAP, TPamSession } from "@app/hooks/api/pam"; @@ -76,8 +78,8 @@ export const PamSessionDetailsSection = ({ className="size-4" />

    {accountName}

    - - + + {resourceName}
    diff --git a/frontend/src/pages/pam/PamSessionsPage/components/PamSessionStatusBadge.tsx b/frontend/src/pages/pam/PamSessionsPage/components/PamSessionStatusBadge.tsx index bbdb3c391..1b347210e 100644 --- a/frontend/src/pages/pam/PamSessionsPage/components/PamSessionStatusBadge.tsx +++ b/frontend/src/pages/pam/PamSessionsPage/components/PamSessionStatusBadge.tsx @@ -1,45 +1,38 @@ import { - faBan, - faCircle, - faGavel, - faHourglass, - IconDefinition -} from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { twMerge } from "tailwind-merge"; + ActivityIcon, + BanIcon, + ChevronsLeftRightEllipsisIcon, + GavelIcon, + LucideIcon +} from "lucide-react"; -import { Badge } from "@app/components/v2"; +import { Badge, TBadgeProps } from "@app/components/v3"; import { PamSessionStatus } from "@app/hooks/api/pam"; interface StatusConfig { - bgColor: string; - textColor: string; - icon: IconDefinition; - iconClassName?: string; + variant: TBadgeProps["variant"]; + icon: LucideIcon; + className?: string; } const PAM_SESSION_STATUS_CONFIG: Record = { [PamSessionStatus.Active]: { - bgColor: "bg-green/20", - textColor: "text-green", - icon: faCircle, - iconClassName: "size-2 animate-pulse" + variant: "success", + icon: ActivityIcon, + className: "animate-pulse" }, [PamSessionStatus.Terminated]: { - bgColor: "bg-red/20", - textColor: "text-red", - icon: faGavel + variant: "danger", + icon: GavelIcon }, [PamSessionStatus.Starting]: { - bgColor: "bg-yellow/20", - textColor: "text-yellow", - icon: faHourglass, - iconClassName: "animate-spin" + variant: "info", + icon: ChevronsLeftRightEllipsisIcon, + className: "animate-pulse" }, [PamSessionStatus.Ended]: { - bgColor: "bg-bunker-300/20", - textColor: "text-bunker-300", - icon: faBan + variant: "neutral", + icon: BanIcon } }; @@ -48,15 +41,11 @@ export const PamSessionStatusBadge = ({ status }: { status: PamSessionStatus }) const displayName = status[0].toUpperCase() + status.slice(1); + const Icon = config.icon; + return ( - - + + {displayName} ); diff --git a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx index b2a2b7cf3..f4eb9e52a 100644 --- a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx +++ b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx @@ -5,6 +5,7 @@ import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { Button, DeleteActionModal } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, @@ -68,7 +69,10 @@ export const GroupsSection = () => { return (
    -

    User Groups

    +
    +

    User Groups

    + +
    {(isAllowed) => ( ) : lastScanStatus === SecretScanningScanStatus.Failed ? ( No findings ) : ( - + No Secrets Detected @@ -209,12 +200,10 @@ export const SecretScanningResourceRow = ({ resource, dataSource }: Props) => { className="text-xs" content={`This ${resourceDetails.singularNoun} will not be scanned due to exclusion in Data Source configuration.`} > -
    - - - Inactive - -
    + + + Inactive + )} diff --git a/frontend/src/pages/secret-scanning/SecretScanningDataSourceByIdPage/components/SecretScanningScanRow.tsx b/frontend/src/pages/secret-scanning/SecretScanningDataSourceByIdPage/components/SecretScanningScanRow.tsx index e174aa0ed..a89402c15 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningDataSourceByIdPage/components/SecretScanningScanRow.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningDataSourceByIdPage/components/SecretScanningScanRow.tsx @@ -1,14 +1,14 @@ import { useCallback } from "react"; -import { faCheck, faCopy, faEllipsisV, faWarning } from "@fortawesome/free-solid-svg-icons"; +import { faCheck, faCopy, faEllipsisV } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { format } from "date-fns"; +import { AlertTriangleIcon, CheckIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { SecretScanningScanStatusBadge } from "@app/components/secret-scanning"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -18,6 +18,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProject } from "@app/context"; import { useToggle } from "@app/hooks"; import { @@ -92,40 +93,33 @@ export const SecretScanningScanRow = ({ scan }: Props) => { ) : // eslint-disable-next-line no-nested-ternary totalFindings ? (
    - - navigate({ - to: "/projects/secret-scanning/$projectId/findings", - params: { - projectId: currentProject.id - }, - search: { - search: `scanId:${id}` - } - }) - } - variant={unresolvedFindings ? "primary" : undefined} - className={twMerge( - "flex h-5 w-min cursor-pointer items-center gap-1.5 whitespace-nowrap", - !unresolvedFindings && "bg-mineshaft-400/50 text-bunker-300" - )} - > - - + +
    ) : status === SecretScanningScanStatus.Failed ? ( No findings ) : ( - + No Secrets Detected diff --git a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx index d14d3a656..af298ecdc 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx @@ -1,6 +1,5 @@ import { useCallback } from "react"; import { - faBan, faCheck, faCopy, faEdit, @@ -8,22 +7,20 @@ import { faExpand, faInfoCircle, faPlugCircleXmark, - faSearch, faToggleOff, faToggleOn, - faTrash, - faWarning + faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { formatDistance } from "date-fns"; +import { AlertTriangleIcon, BanIcon, ScanTextIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { SecretScanningScanStatusBadge } from "@app/components/secret-scanning"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -33,6 +30,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ROUTE_PATHS } from "@app/const/routes"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionSecretScanningDataSourceActions } from "@app/context/ProjectPermissionContext/types"; @@ -139,46 +137,39 @@ export const SecretScanningDataSourceRow = ({ {/* eslint-disable-next-line no-nested-ternary */} {lastScanStatus?.match(/queued|scanning/) ? ( - - - Scanning For Leaks + + + Scanning For Leaks ) : // eslint-disable-next-line no-nested-ternary lastScannedAt ? ( // eslint-disable-next-line no-nested-ternary unresolvedFindings ? ( - { - e.stopPropagation(); - navigate({ - to: "/projects/secret-scanning/$projectId/findings", - params: { - projectId - }, - search: { - search: name, - status: SecretScanningFindingStatus.Unresolved - } - }); - }} - > - - + + ) : lastScanStatus === SecretScanningScanStatus.Failed ? ( No findings ) : ( - + No Secrets Detected @@ -206,12 +197,10 @@ export const SecretScanningDataSourceRow = ({ className="text-xs" content={`Auto-Scan is disabled. Scans will not be automatically triggered when a ${autoScanDescription.verb} occurs to ${autoScanDescription.pluralNoun} associated with this data source`} > -
    - - - Auto-Scan Disabled - -
    + + + Auto-Scan Disabled +
    )} {isDisconnected && ( diff --git a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesSection.tsx b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesSection.tsx index 380ac70bd..a238f87b5 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesSection.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesSection.tsx @@ -1,10 +1,11 @@ -import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { ProjectPermissionCan } from "@app/components/permissions"; import { CreateSecretScanningDataSourceModal } from "@app/components/secret-scanning"; import { Button, Spinner } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { ProjectPermissionSub, useProject, useSubscription } from "@app/context"; import { ProjectPermissionSecretScanningDataSourceActions } from "@app/context/ProjectPermissionContext/types"; import { usePopUp } from "@app/hooks"; @@ -40,22 +41,9 @@ export const SecretScanningDataSourcesSection = () => {
    -
    +

    Data Sources

    - -
    - - Docs - -
    -
    +

    Configure Data Sources to scan for secret leaks from third-party services. diff --git a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingRow.tsx b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingRow.tsx index 579c4ee12..92e77daae 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingRow.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingRow.tsx @@ -7,7 +7,6 @@ import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, Button, Checkbox, DropdownMenu, @@ -20,19 +19,17 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionSecretScanningFindingActions, ProjectPermissionSub } from "@app/context/ProjectPermissionContext/types"; import { SECRET_SCANNING_DATA_SOURCE_MAP, - SECRET_SCANNING_FINDING_STATUS_ICON_MAP + SECRET_SCANNING_FINDING_STATUS_MAP } from "@app/helpers/secretScanningV2"; import { useToggle } from "@app/hooks"; -import { - SecretScanningFindingStatus, - TSecretScanningFinding -} from "@app/hooks/api/secretScanningV2"; +import { TSecretScanningFinding } from "@app/hooks/api/secretScanningV2"; type Props = { isSelected: boolean; @@ -83,6 +80,8 @@ export const SecretScanningFindingRow = ({ const [isExpanded, setIsExpanded] = useToggle(false); + const StatusIcon = SECRET_SCANNING_FINDING_STATUS_MAP[status].Icon; + return ( <> {rule} -

    - - - {status.replace("-", " ")} - -
    + + + {status.replace("-", " ")} + @@ -172,7 +161,7 @@ export const SecretScanningFindingRow = ({ - +
    } > diff --git a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsSection.tsx b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsSection.tsx index d66dc46cb..1ac526dfc 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsSection.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsSection.tsx @@ -1,7 +1,5 @@ -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - import { ContentLoader } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { useProject } from "@app/context"; import { useListSecretScanningFindings } from "@app/hooks/api/secretScanningV2"; @@ -23,22 +21,9 @@ export const SecretScanningFindingsSection = () => {
    -
    +

    Findings

    - -
    - - Docs - -
    -
    +

    Secret leaks discovered across your data sources diff --git a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsTable.tsx b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsTable.tsx index d9ae0e433..cf48ab2c2 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsTable.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningFindingsTable.tsx @@ -38,7 +38,7 @@ import { } from "@app/context/ProjectPermissionContext/types"; import { SECRET_SCANNING_DATA_SOURCE_MAP, - SECRET_SCANNING_FINDING_STATUS_ICON_MAP + SECRET_SCANNING_FINDING_STATUS_MAP } from "@app/helpers/secretScanningV2"; import { usePagination, usePopUp, useResetPageHelper } from "@app/hooks"; import { OrderByDirection } from "@app/hooks/api/generic/types"; @@ -219,34 +219,40 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => { Status - {Object.values(SecretScanningFindingStatus).map((status) => ( - { - e.preventDefault(); - setFilters((prev) => ({ - ...prev, - status: prev.status.includes(status) - ? prev.status.filter((s) => s !== status) - : [...prev.status, status] - })); - }} - key={status} - icon={ - filters.status.includes(status) && ( - - ) - } - iconPos="right" - > -

    - - {status.replace("-", " ")} -
    - - ))} + {Object.values(SecretScanningFindingStatus).map((status) => { + const { Icon } = SECRET_SCANNING_FINDING_STATUS_MAP[status]; + + return ( + { + e.preventDefault(); + setFilters((prev) => ({ + ...prev, + status: prev.status.includes(status) + ? prev.status.filter((s) => s !== status) + : [...prev.status, status] + })); + }} + key={status} + icon={ + filters.status.includes(status) && ( + + ) + } + iconPos="right" + > +
    + + {status.replace("-", " ")} +
    +
    + ); + })} Platform {findings.length ? ( [...new Set(findings.map(({ dataSourceType: type }) => type))].map((type) => { diff --git a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningUpdateFindingModal.tsx b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningUpdateFindingModal.tsx index 11894db7e..484cbcf36 100644 --- a/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningUpdateFindingModal.tsx +++ b/frontend/src/pages/secret-scanning/SecretScanningFindingsPage/components/SecretScanningUpdateFindingModal.tsx @@ -13,7 +13,7 @@ import { SelectItem, TextArea } from "@app/components/v2"; -import { SECRET_SCANNING_FINDING_STATUS_ICON_MAP } from "@app/helpers/secretScanningV2"; +import { SECRET_SCANNING_FINDING_STATUS_MAP } from "@app/helpers/secretScanningV2"; import { SecretScanningFindingStatus, TSecretScanningFinding, @@ -105,9 +105,9 @@ const Content = ({ findings, onComplete }: ContentProps) => { className="w-full border border-mineshaft-500 capitalize" position="popper" dropdownContainerClassName="max-w-none" - icon={value ? SECRET_SCANNING_FINDING_STATUS_ICON_MAP[value].icon : undefined} + LucideIcon={value ? SECRET_SCANNING_FINDING_STATUS_MAP[value].Icon : undefined} iconClassName={ - value ? SECRET_SCANNING_FINDING_STATUS_ICON_MAP[value].className : undefined + value ? SECRET_SCANNING_FINDING_STATUS_MAP[value].className : undefined } > {Object.values(SecretScanningFindingStatus).map((status) => { diff --git a/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/SecretScanningConfigForm.tsx b/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/SecretScanningConfigForm.tsx index b87b29b7c..c9df333c4 100644 --- a/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/SecretScanningConfigForm.tsx +++ b/frontend/src/pages/secret-scanning/SettingsPage/components/ProjectScanningConfigTab/SecretScanningConfigForm.tsx @@ -1,12 +1,11 @@ import { Controller, useForm } from "react-hook-form"; -import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { Button, FormControl, TextArea } from "@app/components/v2"; +import { DocumentationLinkBadge } from "@app/components/v3"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionSecretScanningConfigActions } from "@app/context/ProjectPermissionContext/types"; import { @@ -62,21 +61,7 @@ export const SecretScanningConfigForm = ({ config }: Props) => {

    Project Configuration

    - -
    - - Docs - -
    -
    +

    Configure rules and exceptions to customize scanning diff --git a/frontend/src/pages/ssh/SshCaByIDPage/components/SshCertificateTemplatesTable.tsx b/frontend/src/pages/ssh/SshCaByIDPage/components/SshCertificateTemplatesTable.tsx index 4581e7ca9..8f2b71b03 100644 --- a/frontend/src/pages/ssh/SshCaByIDPage/components/SshCertificateTemplatesTable.tsx +++ b/frontend/src/pages/ssh/SshCaByIDPage/components/SshCertificateTemplatesTable.tsx @@ -10,7 +10,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -26,6 +25,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; import { SshCertTemplateStatus, useGetSshCaCertTemplates } from "@app/hooks/api"; import { caStatusToNameMap, getCaStatusBadgeVariant } from "@app/hooks/api/ca/constants"; diff --git a/frontend/src/pages/ssh/SshCasPage/components/SshCaTable.tsx b/frontend/src/pages/ssh/SshCasPage/components/SshCaTable.tsx index c94f73664..c00679a1f 100644 --- a/frontend/src/pages/ssh/SshCasPage/components/SshCaTable.tsx +++ b/frontend/src/pages/ssh/SshCasPage/components/SshCaTable.tsx @@ -5,7 +5,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -21,6 +20,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import { SshCaStatus, useListWorkspaceSshCas } from "@app/hooks/api"; import { caStatusToNameMap, getCaStatusBadgeVariant } from "@app/hooks/api/ca/constants"; diff --git a/frontend/src/pages/ssh/SshCertsPage/components/SshCertificatesTable.tsx b/frontend/src/pages/ssh/SshCertsPage/components/SshCertificatesTable.tsx index 1ebf3112c..19aefb92a 100644 --- a/frontend/src/pages/ssh/SshCertsPage/components/SshCertificatesTable.tsx +++ b/frontend/src/pages/ssh/SshCertsPage/components/SshCertificatesTable.tsx @@ -3,7 +3,6 @@ import { faCertificate } from "@fortawesome/free-solid-svg-icons"; import { format } from "date-fns"; import { - Badge, EmptyState, Pagination, Table, @@ -15,6 +14,7 @@ import { THead, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { useProject } from "@app/context"; import { useListWorkspaceSshCertificates } from "@app/hooks/api"; diff --git a/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsTable.tsx b/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsTable.tsx index b568b9fd1..92cc0d68c 100644 --- a/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsTable.tsx +++ b/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsTable.tsx @@ -12,7 +12,6 @@ import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -28,6 +27,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import { useListWorkspaceSshHostGroups } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; @@ -98,7 +98,7 @@ export const SshHostGroupsTable = ({ handlePopUpOpen }: Props) => { className="text-xs text-yellow/80" /> {username} - user + user

    ))} diff --git a/frontend/src/pages/ssh/SshHostsPage/components/SshHostsTable.tsx b/frontend/src/pages/ssh/SshHostsPage/components/SshHostsTable.tsx index 182ceebb2..448e62300 100644 --- a/frontend/src/pages/ssh/SshHostsPage/components/SshHostsTable.tsx +++ b/frontend/src/pages/ssh/SshHostsPage/components/SshHostsTable.tsx @@ -3,18 +3,16 @@ import { faEllipsis, faPencil, faServer, - faTrash, - faUser, - faUsers + faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import FileSaver from "file-saver"; +import { UserIcon, UsersIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, @@ -30,6 +28,7 @@ import { Tooltip, Tr } from "@app/components/v2"; +import { Badge } from "@app/components/v3"; import { ProjectPermissionSshHostActions, ProjectPermissionSub, useProject } from "@app/context"; import { fetchSshHostUserCaPublicKey, useListWorkspaceSshHosts } from "@app/hooks/api"; import { LoginMappingSource } from "@app/hooks/api/sshHost/types"; @@ -166,15 +165,14 @@ export const SshHostsTable = ({ handlePopUpOpen }: Props) => { className="flex items-center gap-2" >
    - └─ + └
    - {username} - user + + + User +
    ))} @@ -184,15 +182,14 @@ export const SshHostsTable = ({ handlePopUpOpen }: Props) => { className="flex items-center gap-2" >
    - └─ + └
    - {group} - group + + + Group +
    ))} From 15a57e29ef1e605dfde8bfa0ae4a7975938c111c Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 25 Oct 2025 05:24:28 -0400 Subject: [PATCH 11/38] docs: API versioning info --- docs/api-reference/overview/introduction.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/api-reference/overview/introduction.mdx b/docs/api-reference/overview/introduction.mdx index 6d577e15b..2f75bf0f5 100644 --- a/docs/api-reference/overview/introduction.mdx +++ b/docs/api-reference/overview/introduction.mdx @@ -7,4 +7,10 @@ Infisical's Public (REST) API provides users an alternative way to programmatica secrets via HTTPS requests. This can be useful for automating tasks, such as rotating credentials, or for integrating secret management into a larger system. -With the Public API, you can create, read, update, and delete secrets, as well as manage access control, query audit logs, and more. \ No newline at end of file +With the Public API, you can create, read, update, and delete secrets, as well as manage access control, query audit logs, and more. + +## API Versioning + +The API is versioned on a per-resource basis. A resource's version is only incremented for breaking changes, so different endpoints may have different version numbers (e.g., `/api/v4/secrets` vs. `/api/v1/secret-syncs`). + +As a best practice, always use the latest available version for each endpoint to ensure access to the most recent features and improvements. From 614a725e6fb51066d6852670a658bc57af15e023 Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Mon, 27 Oct 2025 19:49:32 +0530 Subject: [PATCH 12/38] fix: plan clarification in ui popup --- .../components/pki-syncs/PkiSyncSelect.tsx | 6 ++++- .../secret-syncs/SecretSyncSelect.tsx | 5 +++- frontend/src/layouts/PamLayout/PamLayout.tsx | 8 +++++-- .../components/EncryptionPageForm.tsx | 2 ++ .../CertificateTemplatesSection.tsx | 1 + .../components/CertificateTemplatesTable.tsx | 5 +++- .../PkiTemplateListPage.tsx | 1 + .../KmipPage/components/KmipClientTable.tsx | 5 +++- .../OrgGroupsSection/OrgGroupsSection.tsx | 4 +++- .../IdentityAuthMethodModalContent.tsx | 3 ++- .../IdentitySection/IdentityLdapAuthForm.tsx | 10 ++++++-- .../IdentitySection/IdentitySection.tsx | 11 ++++++--- .../OrgMembersSection/OrgMembersSection.tsx | 2 +- .../OrgMembersSection/OrgMembersTable.tsx | 3 ++- .../OrgRoleTabSection/OrgRoleTable.tsx | 2 +- .../components/AppConnectionList.tsx | 5 +++- .../AuditLogsPage/components/LogsSection.tsx | 4 ++-- .../IdentityDetailsByIDPage.tsx | 1 + .../ProjectsPage/ProjectsPage.tsx | 2 +- .../AuditLogStreamTab/AuditLogStreamTab.tsx | 5 +++- .../components/LogStreamProviderSelect.tsx | 5 +++- .../components/KmipTab/OrgKmipTab.tsx | 5 +++- .../OrgEncryptionTab/ExternalKmsItem.tsx | 5 +++- .../OrgEncryptionTab/OrgEncryptionTab.tsx | 5 +++- .../OrgGithubSyncSection.tsx | 5 +++- .../OrgProvisioningTab/OrgSCIMSection.tsx | 13 +++++++--- .../components/OrgSsoTab/OrgLDAPSection.tsx | 13 +++++++--- .../components/OrgSsoTab/OrgSSOSection.tsx | 24 +++++++++++-------- .../components/OrgSsoTab/OrgSsoTab.tsx | 16 +++++++++---- .../components/ProjectTemplatesSection.tsx | 5 +++- .../components/UserOrgMembershipModal.tsx | 2 +- .../components/ResourceTypeSelect.tsx | 20 +++++++++------- .../GroupsSection/GroupsSection.tsx | 6 ++++- .../MemberDetailsByIDPage.tsx | 2 +- .../MemberRoleModify.tsx | 6 ++--- .../AuditLogsRetentionSection.tsx | 5 ++-- .../OverviewPage/OverviewPage.tsx | 15 ++++++------ .../AccessApprovalRequest.tsx | 7 ++++-- .../ApprovalPolicyList/ApprovalPolicyList.tsx | 2 +- .../components/ActionBar/ActionBar.tsx | 23 ++++++++++-------- .../SecretListView/SecretDetailSidebar.tsx | 2 +- .../SecretScanningDataSourcesSection.tsx | 5 +++- .../components/SshHostGroupHostsSection.tsx | 6 ++++- .../components/SshHostGroupsSection.tsx | 6 ++++- 44 files changed, 199 insertions(+), 89 deletions(-) diff --git a/frontend/src/components/pki-syncs/PkiSyncSelect.tsx b/frontend/src/components/pki-syncs/PkiSyncSelect.tsx index 667332c75..aedfebf47 100644 --- a/frontend/src/components/pki-syncs/PkiSyncSelect.tsx +++ b/frontend/src/components/pki-syncs/PkiSyncSelect.tsx @@ -69,7 +69,10 @@ export const PkiSyncSelect = ({ onSelect }: Props) => { type="button" onClick={() => enterprise && !subscription.enterpriseCertificateSyncs - ? handlePopUpOpen("upgradePlan") + ? handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true, + text: "You can use every Certificate Sync if you switch to Infisical's Enterprise plan." + }) : onSelect(destination) } className="group relative flex h-28 cursor-pointer flex-col items-center justify-center overflow-hidden rounded-md border border-mineshaft-600 bg-mineshaft-700 p-4 duration-200 hover:bg-mineshaft-600" @@ -148,6 +151,7 @@ export const PkiSyncSelect = ({ onSelect }: Props) => { handlePopUpToggle("upgradePlan", isOpen)} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} text="You can use every Certificate Sync if you switch to Infisical's Enterprise plan." />
    diff --git a/frontend/src/components/secret-syncs/SecretSyncSelect.tsx b/frontend/src/components/secret-syncs/SecretSyncSelect.tsx index 0c0fdd67b..b3aeab962 100644 --- a/frontend/src/components/secret-syncs/SecretSyncSelect.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncSelect.tsx @@ -67,7 +67,9 @@ export const SecretSyncSelect = ({ onSelect }: Props) => { type="button" onClick={() => enterprise && !subscription.enterpriseSecretSyncs - ? handlePopUpOpen("upgradePlan") + ? handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }) : onSelect(destination) } className="group relative flex h-28 cursor-pointer flex-col items-center justify-center overflow-hidden rounded-md border border-mineshaft-600 bg-mineshaft-700 p-4 duration-200 hover:bg-mineshaft-600" @@ -145,6 +147,7 @@ export const SecretSyncSelect = ({ onSelect }: Props) => { )} handlePopUpToggle("upgradePlan", isOpen)} text="You can use every Secret Sync if you switch to Infisical's Enterprise plan." /> diff --git a/frontend/src/layouts/PamLayout/PamLayout.tsx b/frontend/src/layouts/PamLayout/PamLayout.tsx index f34c29d0d..5b74703dc 100644 --- a/frontend/src/layouts/PamLayout/PamLayout.tsx +++ b/frontend/src/layouts/PamLayout/PamLayout.tsx @@ -18,7 +18,10 @@ export const PamLayout = () => { useEffect(() => { if (subscription && !subscription.pam) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + description: "You can use PAM if you switch to Infisical's Enterprise plan.", + isEnterpriseFeature: true + }); } }, [subscription]); @@ -111,7 +114,8 @@ export const PamLayout = () => { onOpenChange={(isOpen) => { handlePopUpToggle("upgradePlan", isOpen); }} - text="You can use PAM if you switch to a paid Infisical plan." + text={popUp.upgradePlan.data?.description} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx b/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx index 69f4139a2..b434c3f65 100644 --- a/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx +++ b/frontend/src/pages/admin/EncryptionPage/components/EncryptionPageForm.tsx @@ -54,6 +54,7 @@ export const EncryptionPageForm = () => { if (!subscription.hsm) { handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true, description: "Hardware Security Module's (HSM's), are only available on Enterprise plans." }); return; @@ -146,6 +147,7 @@ export const EncryptionPageForm = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text={(popUp.upgradePlan?.data as { description: string })?.description} + isEnterpriseFeature={popUp.upgradePlan?.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesSection.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesSection.tsx index c4d25a6ad..629553200 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesSection.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesSection.tsx @@ -104,6 +104,7 @@ export const CertificateTemplatesSection = ({ caId }: Props) => { handlePopUpToggle("upgradePlan", isOpen)} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} text="Managing template enrollment options for EST is only available on Infisical's Enterprise plan." />
    diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesTable.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesTable.tsx index e7d137807..c36618309 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesTable.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateTemplatesTable.tsx @@ -36,6 +36,7 @@ type Props = { data?: { id?: string; name?: string; + isEnterpriseFeature?: boolean; } ) => void; }; @@ -90,7 +91,9 @@ export const CertificateTemplatesTable = ({ handlePopUpOpen, caId }: Props) => { { if (!subscription?.pkiEst) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } diff --git a/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx b/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx index 440ebb481..14eb6e5b6 100644 --- a/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx +++ b/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx @@ -296,6 +296,7 @@ export const PkiTemplateListPage = () => { isOpen={popUp.estUpgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("estUpgradePlan", isOpen)} text="You can only configure template enrollment methods if you switch to Infisical's Enterprise plan." + isEnterpriseFeature={true} /> ); diff --git a/frontend/src/pages/kms/KmipPage/components/KmipClientTable.tsx b/frontend/src/pages/kms/KmipPage/components/KmipClientTable.tsx index 9ba85beef..474ad158a 100644 --- a/frontend/src/pages/kms/KmipPage/components/KmipClientTable.tsx +++ b/frontend/src/pages/kms/KmipPage/components/KmipClientTable.tsx @@ -170,7 +170,9 @@ export const KmipClientTable = () => { leftIcon={} onClick={() => { if (subscription && !subscription.kmip) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -343,6 +345,7 @@ export const KmipClientTable = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="KMIP requires an enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx index 753ebd93c..125973810 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsSection.tsx @@ -27,7 +27,8 @@ export const OrgGroupsSection = () => { if (!subscription?.groups) { handlePopUpOpen("upgradePlan", { description: - "You can manage users more efficiently with groups if you upgrade your Infisical plan to an Enterprise license." + "You can manage users more efficiently with groups if you upgrade your Infisical plan to an Enterprise license.", + isEnterpriseFeature: true }); } else { handlePopUpOpen("group"); @@ -92,6 +93,7 @@ export const OrgGroupsSection = () => { handlePopUpToggle("upgradePlan", isOpen)} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} text={(popUp.upgradePlan?.data as { description: string })?.description} />
    diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModalContent.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModalContent.tsx index 57663f441..b8bbce31b 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModalContent.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModalContent.tsx @@ -291,7 +291,8 @@ export const IdentityAuthMethodModalContent = ({ handlePopUpToggle("upgradePlan", isOpen)} - text="You can use IP allowlisting if you switch to Infisical's Pro plan." + text={`You can use ${popUp.upgradePlan.data?.featureName ?? "IP allowlisting"} if you switch to Infisical's ${popUp.upgradePlan.data?.isEnterpriseFeature ? "Enterprise" : "Pro"} plan.`} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityLdapAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityLdapAuthForm.tsx index 878e65cfc..b2096fa06 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityLdapAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityLdapAuthForm.tsx @@ -147,7 +147,10 @@ const schema = z export type FormData = z.infer; type Props = { - handlePopUpOpen: (popUpName: keyof UsePopUpState<["upgradePlan"]>) => void; + handlePopUpOpen: ( + popUpName: keyof UsePopUpState<["upgradePlan"]>, + data?: { isEnterpriseFeature?: boolean; featureName?: string } + ) => void; handlePopUpToggle: ( popUpName: keyof UsePopUpState<["identityAuthMethod"]>, state?: boolean @@ -304,7 +307,10 @@ export const IdentityLdapAuthForm = ({ useEffect(() => { if (!subscription?.ldap) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true, + featureName: "LDAP authentication" + }); handlePopUpToggle("identityAuthMethod", false); } }, [subscription, handlePopUpOpen, handlePopUpToggle]); diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentitySection.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentitySection.tsx index 5c15a0cdd..c9af90a26 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentitySection.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentitySection.tsx @@ -163,7 +163,7 @@ export const IdentitySection = withPermission( if (!isMoreIdentitiesAllowed && !isEnterprise) { handlePopUpOpen("upgradePlan", { description: - "You can add more identities if you upgrade your Infisical plan." + "You can add more identities if you upgrade your Infisical Pro plan." }); return; } @@ -209,7 +209,11 @@ export const IdentitySection = withPermission( leftIcon={} onClick={() => { if (subscription && !subscription.machineIdentityAuthTemplates) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true, + description: + "You can use Identity Auth Templates if you switch to Infisical's Enterprise plan." + }); return; } handlePopUpOpen("createTemplate"); @@ -279,7 +283,8 @@ export const IdentitySection = withPermission( handlePopUpToggle("upgradePlan", isOpen)} - text="You can use Identity Auth Templates if you switch to Infisical's Enterprise plan." + text={popUp.upgradePlan.data?.description} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersSection.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersSection.tsx index a8f5ea059..0628a214a 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersSection.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersSection.tsx @@ -75,7 +75,7 @@ export const OrgMembersSection = () => { if (!isMoreIdentitiesAllowed && !isEnterprise) { handlePopUpOpen("upgradePlan", { - description: "You can add more members if you upgrade your Infisical plan." + description: "You can add more members if you switch to Infisical's Pro plan." }); return; } diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx index 8e5d223ca..77ffe9117 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx @@ -133,7 +133,8 @@ export const OrgMembersTable = ({ if (isCustomRole && subscription && !subscription?.rbac) { handlePopUpOpen("upgradePlan", { - description: "You can assign custom roles to members if you upgrade your Infisical plan." + description: + "You can assign custom roles to members if you switch to Infisical's Pro plan." }); return; } diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx index 6aaae7d57..6b9caa8b9 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx @@ -104,7 +104,7 @@ export const OrgRoleTable = () => { if (isCustomRole && subscription && !subscription?.rbac) { handlePopUpOpen("upgradePlan", { description: - "You can set the default org role to a custom role if you upgrade your Infisical plan." + "You can set the default org role to a custom role if you switch to Infisical's Pro plan." }); return; } diff --git a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx index 8cd28ea91..ad0ed433d 100644 --- a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx @@ -75,7 +75,9 @@ export const AppConnectionsSelect = ({ onSelect, projectType }: Props) => { type="button" onClick={() => enterprise && !subscription.enterpriseAppConnections - ? handlePopUpOpen("upgradePlan") + ? handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }) : onSelect(option.app) } className="group relative flex h-28 cursor-pointer flex-col items-center justify-center rounded-md border border-mineshaft-600 bg-mineshaft-700 p-4 duration-200 hover:bg-mineshaft-600" @@ -167,6 +169,7 @@ export const AppConnectionsSelect = ({ onSelect, projectType }: Props) => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="You can use every App Connection if you switch to Infisical's Enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx index e950dbb45..2ad1d20e6 100644 --- a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx +++ b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx @@ -137,7 +137,7 @@ const LogsSectionComponent = ({ onOpenChange={(isOpen) => { handlePopUpToggle("upgradePlan", isOpen); }} - text="You can use audit logs if you switch to a paid Infisical plan." + text="You can use audit logs if you switch to Infisical's Pro plan." />
    @@ -181,7 +181,7 @@ const LogsSectionComponent = ({ onOpenChange={(isOpen) => { handlePopUpToggle("upgradePlan", isOpen); }} - text="You can use audit logs if you switch to a paid Infisical plan." + text="You can use audit logs if you switch to Infisical's Pro plan." />
    ); diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx index 65e7d0b4a..f3bd05eeb 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx @@ -121,6 +121,7 @@ const Page = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text={(popUp.upgradePlan?.data as { description: string })?.description} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> { handlePopUpToggle("upgradePlan", isOpen)} - text="You have exceeded the number of projects allowed on the free plan." + text="You have exceeded the number of projects allowed on the free plan. You can upgrade to Infisical's Pro plan to add more projects." />
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/AuditLogStreamTab.tsx b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/AuditLogStreamTab.tsx index f4f7932a4..2ccdfad61 100644 --- a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/AuditLogStreamTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/AuditLogStreamTab.tsx @@ -29,7 +29,9 @@ export const AuditLogStreamsTab = withPermission(
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/LogStreamProviderSelect.tsx b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/LogStreamProviderSelect.tsx index c8b206cc4..df57dab88 100644 --- a/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/LogStreamProviderSelect.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/AuditLogStreamTab/components/LogStreamProviderSelect.tsx @@ -70,7 +70,9 @@ export const LogStreamProviderSelect = ({ onSelect }: Props) => { type="button" onClick={() => { if (option.provider === LogProvider.QRadar) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); } else { onSelect(option.provider); } @@ -110,6 +112,7 @@ export const LogStreamProviderSelect = ({ onSelect }: Props) => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="This audit log stream provider requires an enterprise license." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/KmipTab/OrgKmipTab.tsx b/frontend/src/pages/organization/SettingsPage/components/KmipTab/OrgKmipTab.tsx index 148b9f443..7203cb9ef 100644 --- a/frontend/src/pages/organization/SettingsPage/components/KmipTab/OrgKmipTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/KmipTab/OrgKmipTab.tsx @@ -180,7 +180,9 @@ const OrgConfigSection = ({ className="mt-2" onClick={() => { if (subscription && !subscription.kmip) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -251,6 +253,7 @@ const OrgConfigSection = ({ isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="KMIP requires an enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/ExternalKmsItem.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/ExternalKmsItem.tsx index d080b57c6..44fc22331 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/ExternalKmsItem.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/ExternalKmsItem.tsx @@ -27,6 +27,7 @@ type Props = { kmsId?: string; name?: string; provider?: string; + isEnterpriseFeature?: boolean; } ) => void; subscription: SubscriptionPlan; @@ -111,7 +112,9 @@ export const ExternalKmsItem = ({ kms, handlePopUpOpen, subscription }: Props) = onClick={(e) => { e.stopPropagation(); if (subscription && !subscription?.externalKms) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/OrgEncryptionTab.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/OrgEncryptionTab.tsx index c2031381a..a0b09b573 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/OrgEncryptionTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgEncryptionTab/OrgEncryptionTab.tsx @@ -74,7 +74,9 @@ export const OrgEncryptionTab = withPermission(
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgProvisioningTab/OrgSCIMSection.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgProvisioningTab/OrgSCIMSection.tsx index c8e6fbc3e..3936a20ee 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgProvisioningTab/OrgSCIMSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgProvisioningTab/OrgSCIMSection.tsx @@ -29,7 +29,9 @@ export const OrgScimSection = () => { if (subscription?.scim) { handlePopUpOpen("scimToken"); } else { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); } }; @@ -37,7 +39,9 @@ export const OrgScimSection = () => { try { if (!currentOrg?.id) return; if (!subscription?.scim) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -90,7 +94,9 @@ export const OrgScimSection = () => { if (subscription?.scim) { handleEnableSCIMToggle(value); } else { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); } }} isChecked={currentOrg?.scimEnabled ?? false} @@ -112,6 +118,7 @@ export const OrgScimSection = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="You can use SCIM Provisioning if you switch to Infisical's Enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgLDAPSection.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgLDAPSection.tsx index 817797eff..9d94d595c 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgLDAPSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgLDAPSection.tsx @@ -34,7 +34,9 @@ export const OrgLDAPSection = (): JSX.Element => { try { if (!currentOrg?.id) return; if (!subscription?.ldap) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -78,7 +80,9 @@ export const OrgLDAPSection = (): JSX.Element => { handlePopUpOpen("addLDAP"); } else { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); } } catch (err) { console.error(err); @@ -87,7 +91,9 @@ export const OrgLDAPSection = (): JSX.Element => { const openLDAPGroupMapModal = () => { if (!subscription?.ldap) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -186,6 +192,7 @@ export const OrgLDAPSection = (): JSX.Element => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="You can use LDAP authentication if you switch to Infisical's Enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSSOSection.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSSOSection.tsx index ecaa06e05..5e9d4c211 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSSOSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSSOSection.tsx @@ -27,7 +27,7 @@ export const OrgSSOSection = (): JSX.Element => { const { mutateAsync } = useUpdateSSOConfig(); const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "upgradePlan", - "upgradeEnterprisePlan", + // "upgradeEnterprisePlan", "addSSO" ] as const); @@ -38,7 +38,9 @@ export const OrgSSOSection = (): JSX.Element => { if (!currentOrg?.id) return; if (!subscription?.samlSSO) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + description: "You can use SAML SSO if you switch to Infisical's Pro plan." + }); return; } @@ -65,7 +67,11 @@ export const OrgSSOSection = (): JSX.Element => { if (!currentOrg?.id) return; if (!subscription?.samlSSO || !subscription?.groups) { - handlePopUpOpen("upgradeEnterprisePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true, + description: + "You can use SAML group mapping if you switch to Infisical's Enterprise plan." + }); return; } @@ -105,7 +111,9 @@ export const OrgSSOSection = (): JSX.Element => { handlePopUpOpen("addSSO"); } else { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + description: "You can use SAML SSO if you switch to Infisical's Pro plan." + }); } } catch (err) { console.error(err); @@ -234,12 +242,8 @@ export const OrgSSOSection = (): JSX.Element => { handlePopUpToggle("upgradePlan", isOpen)} - text="You can use SAML SSO if you switch to Infisical's Pro plan." - /> - handlePopUpToggle("upgradeEnterprisePlan", isOpen)} - text="You can use SAML group mapping if you switch to Infisical's Enterprise plan." + text={popUp.upgradePlan.data?.description} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSsoTab.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSsoTab.tsx index 5c4076159..7700d5c86 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSsoTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/OrgSsoTab.tsx @@ -93,7 +93,7 @@ export const OrgSsoTab = withPermission( colorSchema="secondary" onClick={() => { if (!subscription?.samlSSO) { - handlePopUpOpen("upgradePlan", { feature: "SAML SSO", plan: "Pro" }); + handlePopUpOpen("upgradePlan", { feature: "SAML SSO" }); return; } @@ -116,7 +116,7 @@ export const OrgSsoTab = withPermission( colorSchema="secondary" onClick={() => { if (!subscription?.oidcSSO) { - handlePopUpOpen("upgradePlan", { feature: "OIDC SSO", plan: "Pro" }); + handlePopUpOpen("upgradePlan", { feature: "OIDC SSO" }); return; } @@ -134,7 +134,10 @@ export const OrgSsoTab = withPermission( colorSchema="secondary" onClick={() => { if (!subscription?.ldap) { - handlePopUpOpen("upgradePlan", { feature: "LDAP", plan: "Enterprise" }); + handlePopUpOpen("upgradePlan", { + feature: "LDAP", + isEnterpriseFeature: true + }); return; } @@ -208,8 +211,13 @@ export const OrgSsoTab = withPermission( text={`You can use ${ (popUp.upgradePlan.data as { feature: string })?.feature } if you switch to Infisical's ${ - (popUp.upgradePlan.data as { plan: string })?.plan + (popUp.upgradePlan.data as { isEnterpriseFeature: boolean })?.isEnterpriseFeature + ? "Enterprise" + : "Pro" } plan.`} + isEnterpriseFeature={ + (popUp.upgradePlan.data as { isEnterpriseFeature: boolean })?.isEnterpriseFeature + } /> ); diff --git a/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx index 8d524c41c..bf83a3f6a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ProjectTemplatesTab/components/ProjectTemplatesSection.tsx @@ -60,7 +60,9 @@ export const ProjectTemplatesSection = () => { leftIcon={} onClick={() => { if (!subscription?.projectTemplates) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -84,6 +86,7 @@ export const ProjectTemplatesSection = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="You can create project templates if you switch to Infisical's Enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    diff --git a/frontend/src/pages/organization/UserDetailsByIDPage/components/UserOrgMembershipModal.tsx b/frontend/src/pages/organization/UserDetailsByIDPage/components/UserOrgMembershipModal.tsx index 29b199a0b..59d83749c 100644 --- a/frontend/src/pages/organization/UserDetailsByIDPage/components/UserOrgMembershipModal.tsx +++ b/frontend/src/pages/organization/UserDetailsByIDPage/components/UserOrgMembershipModal.tsx @@ -149,7 +149,7 @@ export const UserOrgMembershipModal = ({ popUp, handlePopUpOpen, handlePopUpTogg if (isCustomRole && subscription && !subscription?.rbac) { handlePopUpOpen("upgradePlan", { description: - "You can assign custom roles to members if you upgrade your Infisical plan." + "You can assign custom roles to members if you switch to Infisical's Pro plan." }); return; } diff --git a/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx b/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx index fe95a98aa..b0bba77bc 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx @@ -54,10 +54,10 @@ export const ResourceTypeSelect = ({ onSelect }: Props) => { const handleResourceSelect = (resource: PamResourceType) => { if (!subscription.pam) { - handlePopUpOpen( - "upgradePlan", - "PAM (Privileged Access Management) requires an enterprise plan." - ); + handlePopUpOpen("upgradePlan", { + description: "PAM (Privileged Access Management) requires an enterprise plan.", + isEnterpriseFeature: true + }); return; } @@ -67,10 +67,11 @@ export const ResourceTypeSelect = ({ onSelect }: Props) => { resource === PamResourceType.SSH || resource === PamResourceType.Kubernetes ) { - handlePopUpOpen( - "upgradePlan", - "This resource type requires a special license add-on to be enabled in your enterprise plan." - ); + handlePopUpOpen("upgradePlan", { + description: + "This resource type requires a special license add-on to be enabled in your enterprise plan.", + isEnterpriseFeature: true + }); return; } @@ -179,7 +180,8 @@ export const ResourceTypeSelect = ({ onSelect }: Props) => { handlePopUpToggle("upgradePlan", isOpen)} - text={popUp.upgradePlan.data || ""} + text={popUp.upgradePlan.data?.description} + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} />
    ); diff --git a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx index b2a2b7cf3..b4beddfdd 100644 --- a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx +++ b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsSection.tsx @@ -33,7 +33,8 @@ export const GroupsSection = () => { if (!subscription?.groups) { handlePopUpOpen("upgradePlan", { description: - "You can manage users more efficiently with groups if you upgrade your Infisical plan to an Enterprise license." + "You can manage users more efficiently with groups if you switch to Infisical's Enterprise plan.", + isEnterpriseFeature: true }); } else { handlePopUpOpen("group"); @@ -100,6 +101,9 @@ export const GroupsSection = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text={(popUp.upgradePlan?.data as { description: string })?.description} + isEnterpriseFeature={ + (popUp.upgradePlan?.data as { isEnterpriseFeature: boolean })?.isEnterpriseFeature + } />
    ); diff --git a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx index b23456a9f..2b85291d0 100644 --- a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx +++ b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx @@ -191,7 +191,7 @@ export const Page = () => { onOpenUpgradeModal={() => handlePopUpOpen("upgradePlan", { description: - "You can assign custom roles to members if you upgrade your Infisical plan." + "You can assign custom roles to members if you switch to Infisical's Pro plan." }) } /> diff --git a/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberRoleDetailsSection/MemberRoleModify.tsx b/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberRoleDetailsSection/MemberRoleModify.tsx index f18131b93..287ea3ad7 100644 --- a/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberRoleDetailsSection/MemberRoleModify.tsx +++ b/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberRoleDetailsSection/MemberRoleModify.tsx @@ -60,7 +60,7 @@ type TRoleForm = z.infer; type Props = { projectMember: TWorkspaceUser; - onOpenUpgradeModal: (title: string) => void; + onOpenUpgradeModal: () => void; }; export const MemberRoleModify = ({ projectMember, onOpenUpgradeModal }: Props) => { @@ -122,9 +122,7 @@ export const MemberRoleModify = ({ projectMember, onOpenUpgradeModal }: Props) = ); if (hasCustomRoleSelected && subscription && !subscription?.rbac) { - onOpenUpgradeModal( - "You can assign custom roles to members if you upgrade your Infisical plan." - ); + onOpenUpgradeModal(); return; } diff --git a/frontend/src/pages/project/SettingsPage/components/AuditLogsRetentionSection/AuditLogsRetentionSection.tsx b/frontend/src/pages/project/SettingsPage/components/AuditLogsRetentionSection/AuditLogsRetentionSection.tsx index eb5c98e6b..d9bbc80d8 100644 --- a/frontend/src/pages/project/SettingsPage/components/AuditLogsRetentionSection/AuditLogsRetentionSection.tsx +++ b/frontend/src/pages/project/SettingsPage/components/AuditLogsRetentionSection/AuditLogsRetentionSection.tsx @@ -42,7 +42,8 @@ export const AuditLogsRetentionSection = () => { try { if (!subscription?.auditLogs) { handlePopUpOpen("upgradePlan", { - description: "You can only configure audit logs retention if you upgrade your plan." + description: + "You can only configure audit logs retention if you switch to Infisical's Pro plan." }); return; @@ -51,7 +52,7 @@ export const AuditLogsRetentionSection = () => { if (subscription && auditLogsRetentionDays > subscription?.auditLogsRetentionDays) { handlePopUpOpen("upgradePlan", { description: - "To update your audit logs retention period to a higher value, upgrade your plan." + "To update your audit logs retention period to a higher value, switch to Infisical's Pro plan." }); return; diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index bd0ae4b16..649b959c4 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -1173,7 +1173,9 @@ export const OverviewPage = () => { return; } handlePopUpOpen("upgradePlan", { - isEnterpriseFeature: true + isEnterpriseFeature: true, + description: + "You can add dynamic secrets if you switch to Infisical's Enterprise plan." }); }} isDisabled={userAvailableDynamicSecretEnvs.length === 0} @@ -1197,7 +1199,10 @@ export const OverviewPage = () => { handlePopUpClose("misc"); return; } - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + description: + "You can add secret rotations if you switch to Infisical's Pro plan." + }); }} isDisabled={userAvailableSecretRotationEnvs.length === 0} variant="outline_bg" @@ -1682,11 +1687,7 @@ export const OverviewPage = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} - text={ - subscription.slug === null - ? "You can perform this action under an Enterprise license" - : "You can perform this action if you switch to Infisical's Enterprise plan" - } + text={popUp.upgradePlan.data?.description} /> )} { if (subscription && !subscription?.secretApproval) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + description: + "You can use request access feature if you switch to Infisical's Pro plan." + }); return; } handlePopUpOpen("requestAccess"); @@ -593,7 +596,7 @@ export const AccessApprovalRequest = ({ )} handlePopUpClose("upgradePlan")} /> diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/ApprovalPolicyList.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/ApprovalPolicyList.tsx index 4daee7e41..836875663 100644 --- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/ApprovalPolicyList.tsx +++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/ApprovalPolicyList.tsx @@ -505,7 +505,7 @@ export const ApprovalPolicyList = ({ projectId }: IProps) => { handlePopUpToggle("upgradePlan", isOpen)} - text="You can add secret approval policy if you switch to Infisical's Enterprise plan." + text="You can add secret approval policy if you switch to Infisical's Pro plan." /> ); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx index 46ff873b5..1ec486bfe 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx @@ -905,7 +905,9 @@ export const ActionBar = ({ return; } - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + feature: "PIT Recovery" + }); }} leftIcon={} isLoading={isSnapshotCountLoading} @@ -1020,6 +1022,7 @@ export const ActionBar = ({ return; } handlePopUpOpen("upgradePlan", { + feature: "Dynamic Secrets", isEnterpriseFeature: true }); }} @@ -1048,7 +1051,9 @@ export const ActionBar = ({ handlePopUpClose("misc"); return; } - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + feature: "Secret Rotation" + }); }} variant="outline_bg" className="h-10 text-left" @@ -1214,7 +1219,11 @@ export const ActionBar = ({ environment={environment} secretPath={secretPath} projectId={projectId} - onUpgradePlan={() => handlePopUpOpen("upgradePlan")} + onUpgradePlan={() => + handlePopUpOpen("upgradePlan", { + feature: "Secret Imports" + }) + } isOpen={popUp.addSecretImport.isOpen} onClose={() => handlePopUpClose("addSecretImport")} onTogglePopUp={(isOpen) => handlePopUpToggle("addSecretImport", isOpen)} @@ -1277,13 +1286,7 @@ export const ActionBar = ({ isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} - text={ - subscription.slug === null - ? "You can perform this action under an Enterprise license" - : `You can perform this action if you switch to Infisical's ${ - popUp.upgradePlan.data?.isEnterpriseFeature ? "Enterprise" : "Pro" - } plan` - } + text={`You can use ${popUp.upgradePlan.data?.feature} if you switch to Infisical's ${popUp.upgradePlan.data?.isEnterpriseFeature ? "Enterprise" : "Pro"} plan.`} /> )} handlePopUpToggle("secretAccessUpgradePlan", isUpgradeModalOpen) } - text="Secret access analysis is only available on Infisical's Pro plan and above." + text="You can access secret access analysis if you switch to Infisical's Pro plan." /> { leftIcon={} onClick={() => { if (!subscription.secretScanning) { - handlePopUpOpen("upgradePlan"); + handlePopUpOpen("upgradePlan", { + isEnterpriseFeature: true + }); return; } @@ -95,6 +97,7 @@ export const SecretScanningDataSourcesSection = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text="You can create Data Sources by upgrading to Infisical's Enterprise plan." + isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/ssh/SshHostGroupDetailsByIDPage/components/SshHostGroupHostsSection.tsx b/frontend/src/pages/ssh/SshHostGroupDetailsByIDPage/components/SshHostGroupHostsSection.tsx index 6bfad3205..df6f2b723 100644 --- a/frontend/src/pages/ssh/SshHostGroupDetailsByIDPage/components/SshHostGroupHostsSection.tsx +++ b/frontend/src/pages/ssh/SshHostGroupDetailsByIDPage/components/SshHostGroupHostsSection.tsx @@ -30,7 +30,8 @@ export const SshHostGroupHostsSection = ({ sshHostGroupId }: Props) => { if (!subscription?.sshHostGroups) { handlePopUpOpen("upgradePlan", { description: - "You can manage hosts more efficiently with SSH host groups if you upgrade your Infisical plan to an Enterprise license." + "You can manage hosts more efficiently with SSH host groups if you upgrade your Infisical plan to an Enterprise license.", + isEnterpriseFeature: true }); } else { handlePopUpOpen("addHostGroupMembers", { @@ -107,6 +108,9 @@ export const SshHostGroupHostsSection = ({ sshHostGroupId }: Props) => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text={(popUp.upgradePlan?.data as { description: string })?.description} + isEnterpriseFeature={ + (popUp.upgradePlan?.data as { isEnterpriseFeature: boolean })?.isEnterpriseFeature + } />
    ); diff --git a/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsSection.tsx b/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsSection.tsx index 0d0bd8e50..189a49686 100644 --- a/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsSection.tsx +++ b/frontend/src/pages/ssh/SshHostsPage/components/SshHostGroupsSection.tsx @@ -26,7 +26,8 @@ export const SshHostGroupsSection = () => { if (!subscription?.sshHostGroups) { handlePopUpOpen("upgradePlan", { description: - "You can manage hosts more efficiently with SSH host groups if you upgrade your Infisical plan to an Enterprise license." + "You can manage hosts more efficiently with SSH host groups if you upgrade your Infisical plan to an Enterprise license.", + isEnterpriseFeature: true }); } else { handlePopUpOpen("sshHostGroup"); @@ -106,6 +107,9 @@ export const SshHostGroupsSection = () => { isOpen={popUp.upgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("upgradePlan", isOpen)} text={(popUp.upgradePlan?.data as { description: string })?.description} + isEnterpriseFeature={ + (popUp.upgradePlan?.data as { isEnterpriseFeature: boolean })?.isEnterpriseFeature + } />
    ); From 54a109f73548f454b132bd21c065145ba653b6fc Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Mon, 27 Oct 2025 19:57:20 +0530 Subject: [PATCH 13/38] fix: update enterprise feature handling in popups --- .../PkiTemplateListPage/PkiTemplateListPage.tsx | 6 ++++-- .../AccessApprovalRequest/AccessApprovalRequest.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx b/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx index 14eb6e5b6..b395d0ec2 100644 --- a/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx +++ b/frontend/src/pages/cert-manager/PkiTemplateListPage/PkiTemplateListPage.tsx @@ -203,7 +203,9 @@ export const PkiTemplateListPage = () => { onClick={(e) => { e.stopPropagation(); if (!subscription.pkiEst) { - handlePopUpOpen("estUpgradePlan"); + handlePopUpOpen("estUpgradePlan", { + isEnterpriseFeature: true + }); return; } handlePopUpOpen("enrollmentOptions", { @@ -296,7 +298,7 @@ export const PkiTemplateListPage = () => { isOpen={popUp.estUpgradePlan.isOpen} onOpenChange={(isOpen) => handlePopUpToggle("estUpgradePlan", isOpen)} text="You can only configure template enrollment methods if you switch to Infisical's Enterprise plan." - isEnterpriseFeature={true} + isEnterpriseFeature={popUp.estUpgradePlan.data?.isEnterpriseFeature} /> ); diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/AccessApprovalRequest.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/AccessApprovalRequest.tsx index b4f9f5afb..bfee96e51 100644 --- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/AccessApprovalRequest.tsx +++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/AccessApprovalRequest.tsx @@ -596,7 +596,7 @@ export const AccessApprovalRequest = ({ )} handlePopUpClose("upgradePlan")} /> From b05b34e6203b5c779136b7200a6b9f0b368589a6 Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Mon, 27 Oct 2025 23:04:41 +0530 Subject: [PATCH 14/38] fix: slug error handling using unique db error code --- .../src/services/project/project-service.ts | 103 +++++++++--------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index deee26e6c..fb2eb70af 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -10,7 +10,8 @@ import { ProjectType, ProjectVersion, TableName, - TProjectEnvironments + TProjectEnvironments, + TProjects } from "@app/db/schemas"; import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; @@ -40,7 +41,8 @@ import { TSshHostGroupDALFactory } from "@app/ee/services/ssh-host-group/ssh-hos import { PgSqlLock, TKeyStoreFactory } from "@app/keystore/keystore"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; -import { BadRequestError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; +import { DatabaseErrorCode } from "@app/lib/error-codes"; +import { BadRequestError, DatabaseError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; import { groupBy } from "@app/lib/fn"; import { alphaNumericNanoId } from "@app/lib/nanoid"; import { TProjectPermission } from "@app/lib/types"; @@ -305,31 +307,33 @@ export const projectServiceFactory = ({ const slug = projectSlug || slugify(`${workspaceName}-${alphaNumericNanoId(4)}`); - const existingProject = await projectDAL.findOne({ - slug, - orgId: organization.id - }); - - if (existingProject) { - throw new BadRequestError({ - message: `Failed to create project. A project with the slug "${slug}" already exists in your organization. Please choose a different name or slug.` - }); + let project: TProjects; + try { + project = await projectDAL.create( + { + name: workspaceName, + type, + description: workspaceDescription, + orgId: organization.id, + slug, + kmsSecretManagerKeyId: kmsKeyId, + version: ProjectVersion.V3, + pitVersionLimit: 10 + }, + tx + ); + } catch (err) { + if ( + err instanceof DatabaseError && + (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ + message: `A project with the slug "${slug}" already exists in your organization. Please choose a different name or slug.` + }); + } + throw err; } - const project = await projectDAL.create( - { - name: workspaceName, - type, - description: workspaceDescription, - orgId: organization.id, - slug, - kmsSecretManagerKeyId: kmsKeyId, - version: ProjectVersion.V3, - pitVersionLimit: 10 - }, - tx - ); - if (type === ProjectType.SSH) { await bootstrapSshProject({ projectId: project.id, @@ -592,39 +596,36 @@ export const projectServiceFactory = ({ }); ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Edit, ProjectPermissionSub.Settings); - if (update.slug) { - const existingProject = await projectDAL.findOne({ - slug: update.slug, - orgId: actorOrgId - }); - if (existingProject && existingProject.id !== project.id) { - throw new BadRequestError({ - message: `Failed to update project slug. The project "${existingProject.name}" with the slug "${existingProject.slug}" already exists in your organization. Please choose a unique slug for your project.` - }); - } - } - if (update.secretDetectionIgnoreValues && !hasRole(ProjectMembershipRole.Admin)) { throw new ForbiddenRequestError({ message: "Only admins can update secret detection ignore values" }); } - const updatedProject = await projectDAL.updateById(project.id, { - name: update.name, - description: update.description, - autoCapitalization: update.autoCapitalization, - enforceCapitalization: update.autoCapitalization, - hasDeleteProtection: update.hasDeleteProtection, - slug: update.slug, - secretSharing: update.secretSharing, - defaultProduct: update.defaultProduct, - showSnapshotsLegacy: update.showSnapshotsLegacy, - secretDetectionIgnoreValues: update.secretDetectionIgnoreValues, - pitVersionLimit: update.pitVersionLimit - }); + try { + const updatedProject = await projectDAL.updateById(project.id, { + name: update.name, + description: update.description, + autoCapitalization: update.autoCapitalization, + enforceCapitalization: update.autoCapitalization, + hasDeleteProtection: update.hasDeleteProtection, + slug: update.slug, + secretSharing: update.secretSharing, + defaultProduct: update.defaultProduct, + showSnapshotsLegacy: update.showSnapshotsLegacy, + secretDetectionIgnoreValues: update.secretDetectionIgnoreValues, + pitVersionLimit: update.pitVersionLimit + }); - return updatedProject; + return updatedProject; + } catch (err) { + if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ + message: `Failed to update project. A project with the slug "${update.slug}" already exists in your organization. Please choose a different slug.` + }); + } + throw err; + } }; const toggleAutoCapitalization = async ({ From 5e9ff006309219138fac793629508b9347eba4f1 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Mon, 27 Oct 2025 14:51:16 -0300 Subject: [PATCH 15/38] refactor: update TTL validation to allow a maximum of 10 years and adjust environment variable defaults for AWS credentials --- backend/src/ee/routes/v1/dynamic-secret-router.ts | 4 ++-- backend/src/lib/config/env.ts | 14 +++++++------- .../CreateDynamicSecretForm/AwsIamInputForm.tsx | 5 ++--- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/backend/src/ee/routes/v1/dynamic-secret-router.ts b/backend/src/ee/routes/v1/dynamic-secret-router.ts index b1b3cea8e..7fb3e8374 100644 --- a/backend/src/ee/routes/v1/dynamic-secret-router.ts +++ b/backend/src/ee/routes/v1/dynamic-secret-router.ts @@ -72,8 +72,8 @@ export const registerDynamicSecretRouter = async (server: FastifyZodProvider) => const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), path: z.string().describe(DYNAMIC_SECRETS.CREATE.path).trim().default("/").transform(removeTrailingSlash), diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 9fc4cff92..81d28167e 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -266,12 +266,8 @@ const envSchema = z RELAY_AUTH_SECRET: zpStr(z.string().optional()), DYNAMIC_SECRET_ALLOW_INTERNAL_IP: zodStrBool.default("false"), - DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: zpStr(z.string().optional()).default( - process.env.INF_APP_CONNECTION_AWS_ACCESS_KEY_ID - ), - DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: zpStr(z.string().optional()).default( - process.env.INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY - ), + DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: zpStr(z.string().optional()), + DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: zpStr(z.string().optional()), /* ----------------------------------------------------------------------------- */ /* App Connections ----------------------------------------------------------------------------- */ @@ -439,7 +435,11 @@ const envSchema = z data.INF_APP_CONNECTION_AZURE_APP_CONFIGURATION_CLIENT_SECRET || data.INF_APP_CONNECTION_AZURE_CLIENT_SECRET, INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_ID: data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_ID || data.CLIENT_ID_HEROKU, INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET: - data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET || data.CLIENT_SECRET_HEROKU + data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET || data.CLIENT_SECRET_HEROKU, + DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: + data.DYNAMIC_SECRET_AWS_ACCESS_KEY_ID || data.INF_APP_CONNECTION_AWS_ACCESS_KEY_ID, + DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: + data.DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY || data.INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY })); export type TEnvConfig = Readonly>; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx index 9f9cc01aa..042eb56e9 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx @@ -107,9 +107,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: z.string().refine((val) => val.toLowerCase() === val, "Must be lowercase"), environment: z.object({ name: z.string(), slug: z.string() }), From c0618cf1d6e4e84c154ea9b0794e70dbb42daeb3 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Mon, 27 Oct 2025 15:20:16 -0300 Subject: [PATCH 16/38] refactor: update TTL validation across dynamic secret forms to allow a maximum of 10 years --- .../src/ee/routes/v1/dynamic-secret-lease-router.ts | 9 ++++----- .../kubernetes-lease-router.ts | 5 ++--- backend/src/ee/routes/v1/dynamic-secret-router.ts | 13 ++++++------- .../AwsElastiCacheInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/AwsIamInputForm.tsx | 5 ++--- .../AzureEntraIdInputForm.tsx | 10 ++++------ .../AzureSqlDatabaseInputForm.tsx | 8 ++++---- .../CreateDynamicSecretForm/CassandraInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/CouchbaseInputForm.tsx | 8 ++++---- .../ElasticSearchInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/KubernetesInputForm.tsx | 8 ++++---- .../CreateDynamicSecretForm/LdapInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/MongoAtlasInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/MongoDBInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/RabbitMqInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/RedisInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/SapAseInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/SapHanaInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/SnowflakeInputForm.tsx | 10 ++++------ .../SqlDatabaseInputForm.tsx | 10 ++++------ .../CreateDynamicSecretForm/VerticaInputForm.tsx | 8 ++++---- .../EditDynamicSecretAwsElastiCacheProviderForm.tsx | 10 ++++------ .../EditDynamicSecretAwsIamForm.tsx | 10 ++++------ .../EditDynamicSecretAzureEntraIdForm.tsx | 10 ++++------ .../EditDynamicSecretAzureSqlDatabaseForm.tsx | 8 ++++---- .../EditDynamicSecretCassandraForm.tsx | 10 ++++------ .../EditDynamicSecretCouchbaseForm.tsx | 8 ++++---- .../EditDynamicSecretElasticSearchForm.tsx | 10 ++++------ .../EditDynamicSecretKubernetesForm.tsx | 8 ++++---- .../EditDynamicSecretLdapForm.tsx | 10 ++++------ .../EditDynamicSecretMongoAtlasForm.tsx | 10 ++++------ .../EditDynamicSecretMongoDBForm.tsx | 10 ++++------ .../EditDynamicSecretRabbitMqForm.tsx | 10 ++++------ .../EditDynamicSecretRedisProviderForm.tsx | 10 ++++------ .../EditDynamicSecretSapAseForm.tsx | 10 ++++------ .../EditDynamicSecretSapHanaForm.tsx | 10 ++++------ .../EditDynamicSecretSnowflakeForm.tsx | 10 ++++------ .../EditDynamicSecretSqlProviderForm.tsx | 10 ++++------ .../EditDynamicSecretVertica.tsx | 8 ++++---- 39 files changed, 154 insertions(+), 212 deletions(-) diff --git a/backend/src/ee/routes/v1/dynamic-secret-lease-router.ts b/backend/src/ee/routes/v1/dynamic-secret-lease-router.ts index 26c27d0d3..62911d523 100644 --- a/backend/src/ee/routes/v1/dynamic-secret-lease-router.ts +++ b/backend/src/ee/routes/v1/dynamic-secret-lease-router.ts @@ -2,7 +2,6 @@ import { z } from "zod"; import { DynamicSecretLeasesSchema } from "@app/db/schemas"; import { ApiDocsTags, DYNAMIC_SECRET_LEASES } from "@app/lib/api-docs"; -import { daysToMillisecond } from "@app/lib/dates"; import { removeTrailingSlash } from "@app/lib/fn"; import { ms } from "@app/lib/ms"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; @@ -32,8 +31,8 @@ export const registerDynamicSecretLeaseRouter = async (server: FastifyZodProvide const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), path: z.string().trim().default("/").transform(removeTrailingSlash).describe(DYNAMIC_SECRET_LEASES.CREATE.path), environmentSlug: z.string().min(1).describe(DYNAMIC_SECRET_LEASES.CREATE.environmentSlug), @@ -127,8 +126,8 @@ export const registerDynamicSecretLeaseRouter = async (server: FastifyZodProvide const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), projectSlug: z.string().min(1).describe(DYNAMIC_SECRET_LEASES.RENEW.projectSlug), path: z diff --git a/backend/src/ee/routes/v1/dynamic-secret-lease-routers/kubernetes-lease-router.ts b/backend/src/ee/routes/v1/dynamic-secret-lease-routers/kubernetes-lease-router.ts index f2751c635..30de7f08a 100644 --- a/backend/src/ee/routes/v1/dynamic-secret-lease-routers/kubernetes-lease-router.ts +++ b/backend/src/ee/routes/v1/dynamic-secret-lease-routers/kubernetes-lease-router.ts @@ -2,7 +2,6 @@ import { z } from "zod"; import { DynamicSecretLeasesSchema } from "@app/db/schemas"; import { ApiDocsTags, DYNAMIC_SECRET_LEASES } from "@app/lib/api-docs"; -import { daysToMillisecond } from "@app/lib/dates"; import { removeTrailingSlash } from "@app/lib/fn"; import { ms } from "@app/lib/ms"; import { writeLimit } from "@app/server/config/rateLimiter"; @@ -32,8 +31,8 @@ export const registerKubernetesDynamicSecretLeaseRouter = async (server: Fastify const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), path: z.string().trim().default("/").transform(removeTrailingSlash).describe(DYNAMIC_SECRET_LEASES.CREATE.path), environmentSlug: z.string().min(1).describe(DYNAMIC_SECRET_LEASES.CREATE.environmentSlug), diff --git a/backend/src/ee/routes/v1/dynamic-secret-router.ts b/backend/src/ee/routes/v1/dynamic-secret-router.ts index 7fb3e8374..0e48206dc 100644 --- a/backend/src/ee/routes/v1/dynamic-secret-router.ts +++ b/backend/src/ee/routes/v1/dynamic-secret-router.ts @@ -3,7 +3,6 @@ import { z } from "zod"; import { DynamicSecretLeasesSchema } from "@app/db/schemas"; import { DynamicSecretProviderSchema } from "@app/ee/services/dynamic-secret/providers/models"; import { ApiDocsTags, DYNAMIC_SECRETS } from "@app/lib/api-docs"; -import { daysToMillisecond } from "@app/lib/dates"; import { removeTrailingSlash } from "@app/lib/fn"; import { ms } from "@app/lib/ms"; import { isValidHandleBarTemplate } from "@app/lib/template/validate-handlebars"; @@ -60,8 +59,8 @@ export const registerDynamicSecretRouter = async (server: FastifyZodProvider) => const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -130,8 +129,8 @@ export const registerDynamicSecretRouter = async (server: FastifyZodProvider) => const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -142,8 +141,8 @@ export const registerDynamicSecretRouter = async (server: FastifyZodProvider) => const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > daysToMillisecond(1)) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: z.string().describe(DYNAMIC_SECRETS.UPDATE.newName).optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsElastiCacheInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsElastiCacheInputForm.tsx index 692493980..c58f2a754 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsElastiCacheInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsElastiCacheInputForm.tsx @@ -36,9 +36,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -48,9 +47,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: z.string().refine((val) => val.toLowerCase() === val, "Must be lowercase"), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx index 042eb56e9..35a416224 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AwsIamInputForm.tsx @@ -95,9 +95,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureEntraIdInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureEntraIdInputForm.tsx index 05f85a9e6..581c473b9 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureEntraIdInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureEntraIdInputForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -49,9 +48,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: z .string() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureSqlDatabaseInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureSqlDatabaseInputForm.tsx index 56a914977..aece11f38 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureSqlDatabaseInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/AzureSqlDatabaseInputForm.tsx @@ -75,8 +75,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -86,8 +86,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CassandraInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CassandraInputForm.tsx index ef05d8a83..15f9387df 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CassandraInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CassandraInputForm.tsx @@ -39,9 +39,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -51,9 +50,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CouchbaseInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CouchbaseInputForm.tsx index 3cc41bf2c..17bfeddca 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CouchbaseInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/CouchbaseInputForm.tsx @@ -240,8 +240,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -251,8 +251,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/ElasticSearchInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/ElasticSearchInputForm.tsx index 31d68e877..1d0b6c268 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/ElasticSearchInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/ElasticSearchInputForm.tsx @@ -60,9 +60,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -72,9 +71,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx index 8e9206695..4165805b1 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/KubernetesInputForm.tsx @@ -99,8 +99,8 @@ const formSchema = z const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -110,8 +110,8 @@ const formSchema = z const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/LdapInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/LdapInputForm.tsx index 824538706..7b7397625 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/LdapInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/LdapInputForm.tsx @@ -61,9 +61,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -73,9 +72,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoAtlasInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoAtlasInputForm.tsx index e19c09576..3b0c7bb3b 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoAtlasInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoAtlasInputForm.tsx @@ -50,9 +50,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -62,9 +61,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoDBInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoDBInputForm.tsx index 0cdb72e27..ac60a77b0 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoDBInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/MongoDBInputForm.tsx @@ -40,9 +40,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -52,9 +51,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RabbitMqInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RabbitMqInputForm.tsx index 137ee0d95..7b2e56464 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RabbitMqInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RabbitMqInputForm.tsx @@ -44,9 +44,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -56,9 +55,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RedisInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RedisInputForm.tsx index 940c43c9c..472d30783 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RedisInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/RedisInputForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -49,9 +48,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapAseInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapAseInputForm.tsx index b6909af2a..621451fda 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapAseInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapAseInputForm.tsx @@ -35,9 +35,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -47,9 +46,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapHanaInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapHanaInputForm.tsx index 66b974f66..034afee2c 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapHanaInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SapHanaInputForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -49,9 +48,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SnowflakeInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SnowflakeInputForm.tsx index abbb115a3..11357e26a 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SnowflakeInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SnowflakeInputForm.tsx @@ -35,9 +35,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -47,9 +46,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SqlDatabaseInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SqlDatabaseInputForm.tsx index 4119cf94d..0a836fec2 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SqlDatabaseInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/SqlDatabaseInputForm.tsx @@ -75,9 +75,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -87,9 +86,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: slugSchema(), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VerticaInputForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VerticaInputForm.tsx index 98cd41165..b48eab850 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VerticaInputForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/VerticaInputForm.tsx @@ -66,8 +66,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -77,8 +77,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), name: z.string().refine((val) => val.toLowerCase() === val, "Must be lowercase"), environment: z.object({ name: z.string(), slug: z.string() }), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsElastiCacheProviderForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsElastiCacheProviderForm.tsx index f741e8215..5740e2061 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsElastiCacheProviderForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsElastiCacheProviderForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -49,9 +48,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsIamForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsIamForm.tsx index 687d0d52b..555ed9eae 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsIamForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAwsIamForm.tsx @@ -71,9 +71,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -83,9 +82,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureEntraIdForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureEntraIdForm.tsx index e6a09d755..c9bfc92cc 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureEntraIdForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureEntraIdForm.tsx @@ -22,9 +22,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -34,9 +33,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional() }); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureSqlDatabaseForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureSqlDatabaseForm.tsx index 36be1b8e5..77bb7aa1f 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureSqlDatabaseForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretAzureSqlDatabaseForm.tsx @@ -73,8 +73,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -84,8 +84,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), metadata: z diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCassandraForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCassandraForm.tsx index 3b95dc8d3..515ee19e3 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCassandraForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCassandraForm.tsx @@ -39,9 +39,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -51,9 +50,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCouchbaseForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCouchbaseForm.tsx index 4282ae256..e69b3460f 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCouchbaseForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretCouchbaseForm.tsx @@ -241,8 +241,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -252,8 +252,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretElasticSearchForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretElasticSearchForm.tsx index e519423a5..000762bc5 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretElasticSearchForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretElasticSearchForm.tsx @@ -58,9 +58,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -70,9 +69,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), usernameTemplate: z.string().trim().nullable().optional() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretKubernetesForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretKubernetesForm.tsx index 0858816bf..95f40f9f5 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretKubernetesForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretKubernetesForm.tsx @@ -97,8 +97,8 @@ const formSchema = z const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -108,8 +108,8 @@ const formSchema = z const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), usernameTemplate: z.string().trim().optional() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretLdapForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretLdapForm.tsx index 75edf5600..09d345d3d 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretLdapForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretLdapForm.tsx @@ -51,9 +51,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -63,9 +62,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoAtlasForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoAtlasForm.tsx index c381f395c..5b577192a 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoAtlasForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoAtlasForm.tsx @@ -50,9 +50,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -62,9 +61,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoDBForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoDBForm.tsx index 689a56b95..90c31e1f0 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoDBForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretMongoDBForm.tsx @@ -33,9 +33,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -45,9 +44,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx index ab40914f4..d80acc6de 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx @@ -35,9 +35,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -47,9 +46,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), usernameTemplate: z.string().trim().nullable().optional() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRedisProviderForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRedisProviderForm.tsx index d77c605e1..bc21a17d7 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRedisProviderForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRedisProviderForm.tsx @@ -38,9 +38,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -50,9 +49,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapAseForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapAseForm.tsx index 86327a767..37dbae5ee 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapAseForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapAseForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), usernameTemplate: z.string().trim().nullable().optional(), maxTTL: z @@ -50,9 +49,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional() }); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapHanaForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapHanaForm.tsx index 8051f883c..430f13e83 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapHanaForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSapHanaForm.tsx @@ -37,9 +37,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -49,9 +48,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), usernameTemplate: z.string().trim().nullable().optional() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSnowflakeForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSnowflakeForm.tsx index 5e23cb2a3..1cbc20cfb 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSnowflakeForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSnowflakeForm.tsx @@ -35,9 +35,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -47,9 +46,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: slugSchema().optional(), usernameTemplate: z.string().trim().nullable().optional() diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSqlProviderForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSqlProviderForm.tsx index 6beeba169..929a1485d 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSqlProviderForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretSqlProviderForm.tsx @@ -73,9 +73,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z .string() @@ -85,9 +84,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - // a day - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }) .nullable(), newName: slugSchema().optional(), diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretVertica.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretVertica.tsx index e2f3e5b4d..e4ccda943 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretVertica.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretVertica.tsx @@ -64,8 +64,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), usernameTemplate: z.string().trim().nullable().optional(), maxTTL: z @@ -76,8 +76,8 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > 24 * 60 * 60 * 1000) - ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than a day" }); + if (valMs > ms("10y")) + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), newName: z.string().refine((val) => val.toLowerCase() === val, "Must be lowercase") }); From 28b37efd60e099863171a3100f1de10b6ee95546 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Mon, 27 Oct 2025 15:29:06 -0300 Subject: [PATCH 17/38] refactor: set default values for AWS access keys in environment configuration --- backend/src/lib/config/env.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 81d28167e..9fc4cff92 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -266,8 +266,12 @@ const envSchema = z RELAY_AUTH_SECRET: zpStr(z.string().optional()), DYNAMIC_SECRET_ALLOW_INTERNAL_IP: zodStrBool.default("false"), - DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: zpStr(z.string().optional()), - DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: zpStr(z.string().optional()), + DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: zpStr(z.string().optional()).default( + process.env.INF_APP_CONNECTION_AWS_ACCESS_KEY_ID + ), + DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: zpStr(z.string().optional()).default( + process.env.INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY + ), /* ----------------------------------------------------------------------------- */ /* App Connections ----------------------------------------------------------------------------- */ @@ -435,11 +439,7 @@ const envSchema = z data.INF_APP_CONNECTION_AZURE_APP_CONFIGURATION_CLIENT_SECRET || data.INF_APP_CONNECTION_AZURE_CLIENT_SECRET, INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_ID: data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_ID || data.CLIENT_ID_HEROKU, INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET: - data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET || data.CLIENT_SECRET_HEROKU, - DYNAMIC_SECRET_AWS_ACCESS_KEY_ID: - data.DYNAMIC_SECRET_AWS_ACCESS_KEY_ID || data.INF_APP_CONNECTION_AWS_ACCESS_KEY_ID, - DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY: - data.DYNAMIC_SECRET_AWS_SECRET_ACCESS_KEY || data.INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY + data.INF_APP_CONNECTION_HEROKU_OAUTH_CLIENT_SECRET || data.CLIENT_SECRET_HEROKU })); export type TEnvConfig = Readonly>; From 0d778dd73709ea0fa3272df99c5afdfdceb1629f Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Mon, 27 Oct 2025 16:05:08 -0300 Subject: [PATCH 18/38] refactor: improve TTL validation logic in EditDynamicSecretRabbitMqForm to ensure proper limits --- .../EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx index d80acc6de..984e68831 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/EditDynamicSecretForm/EditDynamicSecretRabbitMqForm.tsx @@ -35,7 +35,7 @@ const formSchema = z.object({ const valMs = ms(val); if (valMs < 60 * 1000) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be a greater than 1min" }); - if (valMs > ms("10y")) + if (valMs > ms("10y")) ctx.addIssue({ code: z.ZodIssueCode.custom, message: "TTL must be less than 10 years" }); }), maxTTL: z From b9c824559c03e66900d4410469afa23537376120 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 04:57:25 +0800 Subject: [PATCH 19/38] misc: added health and ready probe endpoints --- backend/src/main.ts | 30 +++++++++++----- backend/src/server/app.ts | 76 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 9 deletions(-) diff --git a/backend/src/main.ts b/backend/src/main.ts index 400804804..3936d1c47 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -16,7 +16,7 @@ import { buildRedisFromConfig } from "./lib/config/redis"; import { removeTemporaryBaseDirectory } from "./lib/files"; import { initLogger } from "./lib/logger"; import { queueServiceFactory } from "./queue"; -import { main } from "./server/app"; +import { main, markServerReady } from "./server/app"; import { bootstrapCheck } from "./server/boot-strap-check"; import { kmsRootConfigDALFactory } from "./services/kms/kms-root-config-dal"; import { smtpServiceFactory } from "./services/smtp/smtp-service"; @@ -59,8 +59,6 @@ const run = async () => { }) : undefined; - await runMigrations({ applicationDb: db, auditLogDb, logger }); - const smtp = smtpServiceFactory(formatSmtpConfig()); const queue = queueServiceFactory(envConfig, { @@ -87,8 +85,8 @@ const run = async () => { redis, envConfig }); - const bootstrap = await bootstrapCheck({ db }); + // Setup signal handlers // eslint-disable-next-line process.on("SIGINT", async () => { await server.close(); @@ -119,14 +117,28 @@ const run = async () => { }); } + // Start listening BEFORE migrations + // At this point: /api/health returns 200, /api/ready returns 503 await server.listen({ port: envConfig.PORT, - host: envConfig.HOST, - listenTextResolver: (address) => { - void bootstrap(); - return address; - } + host: envConfig.HOST }); + + logger.info(`Server listening on ${envConfig.HOST}:${envConfig.PORT}`); + logger.info("Running migrations - health check available, other endpoints blocked..."); + + // Run migrations while server is up + await runMigrations({ applicationDb: db, auditLogDb, logger }); + + logger.info("Migrations complete. Marking server as ready..."); + + // Mark server as ready - now all endpoints work + markServerReady(); + + logger.info("Server is ready to accept traffic"); + + const bootstrap = await bootstrapCheck({ db }); + void bootstrap(); }; void run(); diff --git a/backend/src/server/app.ts b/backend/src/server/app.ts index f1176b932..eadda27cd 100644 --- a/backend/src/server/app.ts +++ b/backend/src/server/app.ts @@ -1,5 +1,6 @@ /* eslint-disable import/extensions */ import path from "node:path"; +import { monitorEventLoopDelay } from "perf_hooks"; import type { FastifyCookieOptions } from "@fastify/cookie"; import cookie from "@fastify/cookie"; @@ -24,6 +25,7 @@ import { TQueueServiceFactory } from "@app/queue"; import { TKmsRootConfigDALFactory } from "@app/services/kms/kms-root-config-dal"; import { TSmtpService } from "@app/services/smtp/smtp-service"; import { TSuperAdminDALFactory } from "@app/services/super-admin/super-admin-dal"; +import { getServerCfg } from "@app/services/super-admin/super-admin-service"; import { globalRateLimiterCfg } from "./config/rateLimiter"; import { addErrorsToResponseSchemas } from "./plugins/add-errors-to-response-schemas"; @@ -36,6 +38,15 @@ import { registerServeUI } from "./plugins/serve-ui"; import { fastifySwagger } from "./plugins/swagger"; import { registerRoutes } from "./routes"; +// Monitor event loop for readiness checks +const histogram = monitorEventLoopDelay({ resolution: 20 }); +histogram.enable(); + +// Readiness state +const readinessState = { + isReady: false +}; + type TMain = { auditLogDb?: Knex; db: Knex; @@ -145,6 +156,66 @@ export const main = async ({ }) }); + // Health check - always returns 200 when server is running + server.get("/api/health", async () => { + return { status: "ok", message: "Server is alive" }; + }); + + // Global preHandler to block requests during migrations + // Excludes /api/health and /api/ready endpoints + server.addHook("preHandler", async (request, reply) => { + if (request.url === "/api/health" || request.url === "/api/ready") { + return; + } + if (!readinessState.isReady) { + return reply.code(503).send({ + status: "unavailable", + message: "Server is starting up, migrations in progress. Please try again in a moment." + }); + } + }); + + // Readiness check - returns 503 until migrations are complete + server.get("/api/ready", async (request, reply) => { + const cfg = getConfig(); + + // Calculate event loop statistics + const meanLagMs = histogram.mean / 1e6; + const maxLagMs = histogram.max / 1e6; + const p99LagMs = histogram.percentile(99) / 1e6; + + request.log.info( + `Event loop stats - Mean: ${meanLagMs.toFixed(2)}ms, Max: ${maxLagMs.toFixed(2)}ms, p99: ${p99LagMs.toFixed(2)}ms` + ); + + request.log.info(`Raw event loop stats: ${JSON.stringify(histogram, null, 2)}`); + + if (!readinessState.isReady) { + return reply.code(503).send({ + date: new Date(), + message: "Server is starting up, migrations in progress", + emailConfigured: cfg.isSmtpConfigured, + redisConfigured: cfg.isRedisConfigured, + secretScanningConfigured: cfg.isSecretScanningConfigured, + samlDefaultOrgSlug: cfg.samlDefaultOrgSlug, + auditLogStorageDisabled: Boolean(cfg.DISABLE_AUDIT_LOG_STORAGE) + }); + } + + const serverCfg = await getServerCfg(); + + return { + date: new Date(), + message: "Ok", + emailConfigured: cfg.isSmtpConfigured, + inviteOnlySignup: Boolean(serverCfg.allowSignUp), + redisConfigured: cfg.isRedisConfigured, + secretScanningConfigured: cfg.isSecretScanningConfigured, + samlDefaultOrgSlug: cfg.samlDefaultOrgSlug, + auditLogStorageDisabled: Boolean(cfg.DISABLE_AUDIT_LOG_STORAGE) + }; + }); + await server.register(registerRoutes, { smtp, queue, @@ -171,3 +242,8 @@ export const main = async ({ process.exit(1); } }; + +// Function to mark server as ready after migrations +export const markServerReady = () => { + readinessState.isReady = true; +}; From 8214e07abd531af01c4335005398c0b52d6acbea Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 05:52:58 +0800 Subject: [PATCH 20/38] misc: properly handled multi-container setups --- backend/e2e-test/vitest-environment-knex.ts | 4 ++- backend/src/auto-start-migrations.ts | 9 +++++- backend/src/main.ts | 25 ++++++++++----- backend/src/server/app.ts | 34 +++++++++++++++------ 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/backend/e2e-test/vitest-environment-knex.ts b/backend/e2e-test/vitest-environment-knex.ts index 0f84dbee2..f33d32f6a 100644 --- a/backend/e2e-test/vitest-environment-knex.ts +++ b/backend/e2e-test/vitest-environment-knex.ts @@ -8,7 +8,7 @@ import path from "path"; import { seedData1 } from "@app/db/seed-data"; import { getDatabaseCredentials, getHsmConfig, initEnvConfig } from "@app/lib/config/env"; import { initLogger } from "@app/lib/logger"; -import { main } from "@app/server/app"; +import { main, markServerReady } from "@app/server/app"; import { AuthMethod, AuthTokenType } from "@app/services/auth/auth-type"; import { mockSmtpServer } from "./mocks/smtp"; @@ -96,6 +96,8 @@ export default { envConfig: envCfg }); + markServerReady(); + await bootstrapCheck({ db }); // @ts-expect-error type diff --git a/backend/src/auto-start-migrations.ts b/backend/src/auto-start-migrations.ts index 88f6dea69..38c30366d 100644 --- a/backend/src/auto-start-migrations.ts +++ b/backend/src/auto-start-migrations.ts @@ -12,6 +12,7 @@ type TArgs = { auditLogDb?: Knex; applicationDb: Knex; logger: Logger; + onMigrationLockAcquired?: () => void; }; const isProduction = process.env.NODE_ENV === "production"; @@ -30,7 +31,7 @@ const migrationStatusCheckErrorHandler = (err: Error) => { throw err; }; -export const runMigrations = async ({ applicationDb, auditLogDb, logger }: TArgs) => { +export const runMigrations = async ({ applicationDb, auditLogDb, logger, onMigrationLockAcquired }: TArgs) => { try { // akhilmhdh(Feb 10 2025): 2 years from now remove this if (isProduction) { @@ -85,6 +86,12 @@ export const runMigrations = async ({ applicationDb, auditLogDb, logger }: TArgs await applicationDb.transaction(async (tx) => { await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.BootUpMigration]); + + // Signal that this container is running migrations + if (onMigrationLockAcquired) { + onMigrationLockAcquired(); + } + logger.info("Running application migrations."); const didPreviousInstanceRunMigration = !(await applicationDb.migrate diff --git a/backend/src/main.ts b/backend/src/main.ts index 3936d1c47..d680fc006 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -16,7 +16,7 @@ import { buildRedisFromConfig } from "./lib/config/redis"; import { removeTemporaryBaseDirectory } from "./lib/files"; import { initLogger } from "./lib/logger"; import { queueServiceFactory } from "./queue"; -import { main, markServerReady } from "./server/app"; +import { main, markRunningMigrations, markServerReady } from "./server/app"; import { bootstrapCheck } from "./server/boot-strap-check"; import { kmsRootConfigDALFactory } from "./services/kms/kms-root-config-dal"; import { smtpServiceFactory } from "./services/smtp/smtp-service"; @@ -118,25 +118,36 @@ const run = async () => { } // Start listening BEFORE migrations - // At this point: /api/health returns 200, /api/ready returns 503 await server.listen({ port: envConfig.PORT, host: envConfig.HOST }); logger.info(`Server listening on ${envConfig.HOST}:${envConfig.PORT}`); - logger.info("Running migrations - health check available, other endpoints blocked..."); + logger.info("Running migrations..."); // Run migrations while server is up - await runMigrations({ applicationDb: db, auditLogDb, logger }); + // All containers start as NOT HEALTHY (waiting for migrations) + // Container that acquires lock: becomes HEALTHY (running migrations) + NOT READY (no traffic) + // Other containers waiting: stay NOT HEALTHY (waiting) + NOT READY (no traffic) + await runMigrations({ + applicationDb: db, + auditLogDb, + logger, + onMigrationLockAcquired: () => { + // Called after successfully acquiring the lock + // This container is now the migration runner + markRunningMigrations(); + logger.info("Migration lock acquired! This container is running migrations."); + } + }); - logger.info("Migrations complete. Marking server as ready..."); + logger.info("Migrations complete. Marking server as READY..."); - // Mark server as ready - now all endpoints work + // Now mark server as ready - it can accept traffic markServerReady(); logger.info("Server is ready to accept traffic"); - const bootstrap = await bootstrapCheck({ db }); void bootstrap(); }; diff --git a/backend/src/server/app.ts b/backend/src/server/app.ts index eadda27cd..2de20ab46 100644 --- a/backend/src/server/app.ts +++ b/backend/src/server/app.ts @@ -42,9 +42,11 @@ import { registerRoutes } from "./routes"; const histogram = monitorEventLoopDelay({ resolution: 20 }); histogram.enable(); -// Readiness state -const readinessState = { - isReady: false +// Server state tracking +const serverState = { + isReady: false, + isRunningMigrations: false, + isWaitingForMigrations: true // Start as true - containers are unhealthy until they acquire migration lock or complete }; type TMain = { @@ -156,8 +158,15 @@ export const main = async ({ }) }); - // Health check - always returns 200 when server is running - server.get("/api/health", async () => { + // Health check - returns 200 only if doing useful work (running migrations or ready) + // Returns 503 if waiting for another container to finish migrations + server.get("/api/health", async (_, reply) => { + if (serverState.isWaitingForMigrations) { + return reply.code(503).send({ + status: "waiting", + message: "Waiting for migrations to complete in another container" + }); + } return { status: "ok", message: "Server is alive" }; }); @@ -167,7 +176,7 @@ export const main = async ({ if (request.url === "/api/health" || request.url === "/api/ready") { return; } - if (!readinessState.isReady) { + if (!serverState.isReady) { return reply.code(503).send({ status: "unavailable", message: "Server is starting up, migrations in progress. Please try again in a moment." @@ -190,7 +199,7 @@ export const main = async ({ request.log.info(`Raw event loop stats: ${JSON.stringify(histogram, null, 2)}`); - if (!readinessState.isReady) { + if (!serverState.isReady) { return reply.code(503).send({ date: new Date(), message: "Server is starting up, migrations in progress", @@ -243,7 +252,14 @@ export const main = async ({ } }; -// Function to mark server as ready after migrations +// Functions to manage server state export const markServerReady = () => { - readinessState.isReady = true; + serverState.isReady = true; + serverState.isRunningMigrations = false; + serverState.isWaitingForMigrations = false; +}; + +export const markRunningMigrations = () => { + serverState.isRunningMigrations = true; + serverState.isWaitingForMigrations = false; }; From 97a01bdcb40a0ce5f0d826d4330f113d4c7d3f3d Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Mon, 27 Oct 2025 18:57:28 -0300 Subject: [PATCH 21/38] Address PR comments --- .../forms/CreateSecretSyncForm.tsx | 6 +- .../DuplicateDestinationConfirmationModal.tsx | 49 ++++++++------ .../secret-syncs/forms/EditSecretSyncForm.tsx | 3 + .../SecretSyncReviewFields.tsx | 2 +- ...DuplicateSecretSyncDestinationsSection.tsx | 64 ------------------- .../index.ts | 1 - .../OrgProductSettingsTab.tsx | 6 +- .../SettingsPage/components/index.tsx | 1 - 8 files changed, 37 insertions(+), 95 deletions(-) delete mode 100644 frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx delete mode 100644 frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts diff --git a/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx b/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx index d10d27803..ebad86cbd 100644 --- a/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx +++ b/frontend/src/components/secret-syncs/forms/CreateSecretSyncForm.tsx @@ -256,11 +256,7 @@ export const CreateSecretSyncForm = ({
    - {selectedTabIndex > 0 && ( diff --git a/frontend/src/components/secret-syncs/forms/DuplicateDestinationConfirmationModal.tsx b/frontend/src/components/secret-syncs/forms/DuplicateDestinationConfirmationModal.tsx index d80dbc640..59871e880 100644 --- a/frontend/src/components/secret-syncs/forms/DuplicateDestinationConfirmationModal.tsx +++ b/frontend/src/components/secret-syncs/forms/DuplicateDestinationConfirmationModal.tsx @@ -6,6 +6,7 @@ type Props = { onConfirm: () => void; isLoading?: boolean; duplicateProjectId?: string; + isDisabled?: boolean; }; export const DuplicateDestinationConfirmationModal = ({ @@ -13,7 +14,8 @@ export const DuplicateDestinationConfirmationModal = ({ onOpenChange, onConfirm, isLoading, - duplicateProjectId + duplicateProjectId, + isDisabled }: Props) => { return ( @@ -21,7 +23,12 @@ export const DuplicateDestinationConfirmationModal = ({

    Another secret sync in your organization is already configured with the same - destination. Proceeding may cause conflicts or overwrite existing data. + destination.{" "} + + {isDisabled + ? "Your organization does not allow duplicate destination configurations." + : "Proceeding may cause conflicts or overwrite existing data."} +

    {duplicateProjectId && (

    @@ -31,26 +38,28 @@ export const DuplicateDestinationConfirmationModal = ({

    )} -

    Are you sure you want to continue?

    + {!isDisabled &&

    Are you sure you want to continue?

    }
    -
    - - - - - - -
    + {!isDisabled && ( +
    + + + + + + +
    + )}
    ); diff --git a/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx b/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx index 3c0e4ea17..2085afe9c 100644 --- a/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx +++ b/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx @@ -5,6 +5,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { createNotification } from "@app/components/notifications"; import { SecretSyncEditFields } from "@app/components/secret-syncs/types"; import { Button, ModalClose } from "@app/components/v2"; +import { useOrganization } from "@app/context"; import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs"; import { TSecretSync, @@ -30,6 +31,7 @@ export const EditSecretSyncForm = ({ secretSync, fields, onComplete }: Props) => const { name: destinationName } = SECRET_SYNC_MAP[secretSync.destination]; const [showDuplicateConfirmation, setShowDuplicateConfirmation] = useState(false); const [pendingFormData, setPendingFormData] = useState(null); + const { currentOrg } = useOrganization(); const formMethods = useForm({ resolver: zodResolver(UpdateSecretSyncFormSchema), @@ -209,6 +211,7 @@ export const EditSecretSyncForm = ({ secretSync, fields, onComplete }: Props) => onConfirm={handleConfirmDuplicate} isLoading={updateSecretSync.isPending} duplicateProjectId={storedDuplicateProjectId} + isDisabled={currentOrg?.blockDuplicateSecretSyncDestinations} /> ); diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx index 4a796933d..5c04fb308 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx @@ -219,7 +219,7 @@ export const SecretSyncReviewFields = () => {

    {currentOrg?.blockDuplicateSecretSyncDestinations - ? "Another secret sync in your organization is already configured with the same destination. This organization has blocking duplicate destinations enabled." + ? "Another secret sync in your organization is already configured with the same destination. Your organization does not allow duplicate destination configurations." : "Another secret sync in your organization is already configured with the same destination. This may lead to conflicts or unexpected behavior."}

    {duplicateProjectId && ( diff --git a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx deleted file mode 100644 index a2346bd91..000000000 --- a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/BlockDuplicateSecretSyncDestinationsSection.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useState } from "react"; - -import { createNotification } from "@app/components/notifications"; -import { OrgPermissionCan } from "@app/components/permissions"; -import { Checkbox } from "@app/components/v2"; -import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; -import { useUpdateOrg } from "@app/hooks/api/organization/queries"; - -export const BlockDuplicateSecretSyncDestinationsSection = () => { - const { currentOrg } = useOrganization(); - const { mutateAsync: updateOrg } = useUpdateOrg(); - - const [isLoading, setIsLoading] = useState(false); - - const handleToggle = async (state: boolean) => { - setIsLoading(true); - - try { - if (!currentOrg?.id) { - setIsLoading(false); - return; - } - - await updateOrg({ - orgId: currentOrg.id, - blockDuplicateSecretSyncDestinations: state - }); - - createNotification({ - text: `Successfully ${state ? "enabled" : "disabled"} blocking duplicate secret sync destinations for this organization`, - type: "success" - }); - } catch (err) { - console.error(err); - createNotification({ - text: "Failed to update blocking duplicate secret sync destinations setting for this organization", - type: "error" - }); - } finally { - setIsLoading(false); - } - }; - - return ( -
    -

    Block Duplicate Secret Sync Destinations

    - - {(isAllowed) => ( -
    - handleToggle(state as boolean)} - > - This feature prevents creating secret syncs with destinations that are already in use - by other syncs in your organization. - -
    - )} -
    -
    - ); -}; diff --git a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts b/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts deleted file mode 100644 index 0426a6178..000000000 --- a/frontend/src/pages/organization/SettingsPage/components/BlockDuplicateSecretSyncDestinationsSection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { BlockDuplicateSecretSyncDestinationsSection } from "./BlockDuplicateSecretSyncDestinationsSection"; diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx index 5e23a4f97..e4d935996 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgProductSettingsTab/OrgProductSettingsTab.tsx @@ -49,11 +49,11 @@ export const OrgProductSettingsTab = () => {

    - Block Duplicate Secret Sync Destinations + Unique Secret Sync Destination Policy

    - When enabled, this setting prevents the creation of multiple sync configurations - pointing to the same destination. + When enabled, ensures each destination can only be used by one secret sync + configuration, preventing potential conflicts or overwrites.

    diff --git a/frontend/src/pages/organization/SettingsPage/components/index.tsx b/frontend/src/pages/organization/SettingsPage/components/index.tsx index 3387ed32b..82909f799 100644 --- a/frontend/src/pages/organization/SettingsPage/components/index.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/index.tsx @@ -1,3 +1,2 @@ -export { BlockDuplicateSecretSyncDestinationsSection } from "./BlockDuplicateSecretSyncDestinationsSection"; export { OrgProductSettingsTab } from "./OrgProductSettingsTab"; export { OrgTabGroup } from "./OrgTabGroup"; From 4acf9b92f77e4706ea6eae1bf166a606b970787e Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Tue, 28 Oct 2025 03:31:33 +0530 Subject: [PATCH 22/38] feat: adds group access token support --- .../gitlab/gitlab-connection-enums.ts | 3 +- .../gitlab-group-access-token-created.png | Bin 0 -> 312374 bytes ...ab-group-access-token-form-secret-sync.png | Bin 0 -> 434317 bytes .../gitlab/gitlab-group-access-token-list.png | Bin 0 -> 267088 bytes docs/integrations/app-connections/gitlab.mdx | 43 ++++++++++++++++++ .../hooks/api/appConnections/gitlab/types.ts | 3 +- 6 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 docs/images/app-connections/gitlab/gitlab-group-access-token-created.png create mode 100644 docs/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png create mode 100644 docs/images/app-connections/gitlab/gitlab-group-access-token-list.png diff --git a/backend/src/services/app-connection/gitlab/gitlab-connection-enums.ts b/backend/src/services/app-connection/gitlab/gitlab-connection-enums.ts index 3bd01d147..f409a61cf 100644 --- a/backend/src/services/app-connection/gitlab/gitlab-connection-enums.ts +++ b/backend/src/services/app-connection/gitlab/gitlab-connection-enums.ts @@ -5,5 +5,6 @@ export enum GitLabConnectionMethod { export enum GitLabAccessTokenType { Project = "project", - Personal = "personal" + Personal = "personal", + Group = "group" } diff --git a/docs/images/app-connections/gitlab/gitlab-group-access-token-created.png b/docs/images/app-connections/gitlab/gitlab-group-access-token-created.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a7383f27d50e1f0ccb43207958afc24b88d66a GIT binary patch literal 312374 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 z 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
    (hCG!X=5d3v@~p%DyS!b>=G*(1937vgS+2Eh$St z>xEYa>uPHS@6CQ|yr|Q%0ZIc<@<-zd@=r~X7WL8|fH|*pr=cPB3TO!AW&4k+br&Pg ziTIAVFJBb7&a)d46$Mp@&ELF)r8Z!dfYDvn%4u?@jIwnl+2194g9sc#V_x>Q;sE0m` zk6UNS^+)_&frz(n&vf$<)ipH8Mc$WJ)1`a=E+C4}ad4JZXJP5fJyf2n#M1%)%}I&C z>(Y{vSA}(Bdzce^i1M1`gXpD0D;hpjY~XH>au-cBPaf4P+A>DGquT zd;b(^u6ih(u@bXTc=AM}M~|_shxZmY?&3|#Vq;Vvs!Y>LDnI{@T%ea%UHO(tG}l@L zVUG5>&2I0&tMvU32djq9Xmpjxxl@Zy-f?RQKML0KW>Vj0C@~Fh#5l2mWrj3t z90%Q&1tZ#xUqY?sUW|a=w}og+>1me8Nez}IdwP*aIbPn{AJtX6zDa}07;9fOwW4^%sCv#*@2As^G#nO8`1u-g;OYCS)j zqv-y|pdmnu-)>Q=#&m_n`SF`D<#(@N%V4n?HF||6Gv;NV{>lIpKRcUQ#J4$Y#Km=? zS2tb%dv835wKs)BuZ!HyjKmERB2Wvo+CdWyZ@>VjVosAQ(aqBq>nHy@e zIFN0smgavA>-)};kq8jnBBO(-iVBV8kiTcz2`g!&LY8eg$)mJ23z#yB%ojc@Wh9XR zNZJP4itS4kUAh(9X8P^XdC$fxVNzVXMi%;~yJjH|Gc)tiTLmw@EsD`vZ=xsxTZQ-G z*mc^O_IP2N)m#B~Ha6qKfph0rqy?^VZpYj=`Zlokf`a48l6cgA=Hm@vHyWKJM)$?e zf`bWK;m=wnPMeWAW;$*=mCx%kAz(T$oPj{py#@9^V>C-(Pqv~4h0$@AZPR-*s z7B6C1Sv@EBy}A-~+wy3E3Ee?(*I0PlNf424w{*?8S@f`WANGkGY^Ii8>!e=9$D1sz z`+VpqEzE?Erx;8a=3<-yu#(>2-cv9SyX%Q}q3Vw6Q!ev~h;drwEETm9H<>#ogx7?g zsx=wBe97TjPg2DT)4xsD3F5>seh&g_fc9HLn?9vIOQ^2$A-opaqyUZLj0QOhXt>S|jF`t8Pe0ll{c*1VY0 zRq9_dy6+V2e@2j~W~nH%kXJQuUcPv7RNhiEJ7V4VqjgmKu|Gxc zSt9a#H_Qi19RZ+E*+o|3qFNvvi<`#E6bz5?OEYJ;-;%h{H0M1DE3Tj>uG+FQ_Hjsq zY_!03L)``dyOLhCf6u)0V#vPCo^SUS-VuwWbwg8wfE)Y|sa`Q9sL$BXj$L#lTK@Xz ztnK`8hDhByf>OG~a8B6V#n|A}z`%f+Mu}dj75wIldN;*1b4p0$!psb$VpkU;&80;e zwU(p%o3`Q}d0)V0>YyRF0RG2?s{=JV5jv8StevbeI7tR$fP6ejdNzKjSyC+WknKH~+@$Bnct5_Btb;`&faa@i@Gd*ijkUIV_ zz3QO*7)zB%J>X*teK|(^>)h8jm+yI|YgP13GhGAIGCz_82{Ct5ZDE&Ew8lgi zHPn2_C@F6pQ9eRGMa}A|NKx_?J7aPmRcu<{hU8)l`_9lhspeKapx&cpCJTUYy_|7x zuBsG}ixc9q!0u4;7sCWgvyD-?d^dpKYV%oJ^bI{8v}6d1Jz}aQ!UF2-;V`{fq8yx@ zGEi9y&Ff1=>ns*XyK<1bhwn?Kdsf>txOjO6-hY0% z9!x-OYGwv$iGea{iK;9>w`CJp^(MZnQfOrMk{^0}jGq7Tu$g`UdvsP9QV@OxIIKZ_ zwZj$>zJJm-H&|!;=mTyLhsgtX09#5_s#Z6 zGMaU}zBhptCKGXRbOzxAaf`1|SaMWkkVE{fJ8N+FTn2j3ZmvgpKdFD9bgT=5W9Q^l z)?V+Ppyk(D?%l1?s|md)e+UxGNR6T}@h-GjR<9dSw!&(1@TdWrRK=ES?pND2eo9nG zdtz<90Y$o|&y#dGK5@8@p2}cCu*vCVLaWnN3rHTL3tx3Nlh#PB0hk}gq^eRj2#0NO zW7qaOAll7L)OkcL3aNw@ZP%2qeP-&eqgxxBMy9Cixu$bgblTNcQC?!Kbc6%>wsW}f z$7_DdEdZ^AHyNB9Etr}TrT#wT%9H@00E1I4!vvMr}&1z8xmrI_aMUst3Utt=8~VE6EP|2)}dok zQBhc298%lMaM`d(oqwonU3b8Lj8WLssi~=HXGKC(Oza%B9~q0efkBq(v#3Pij{ExJ zDJpi;i21!_Guz)(11RriU4gy~uF}MS`a58umtki`D4>QSx(?p!gexd0n2%PHUp`8A zcsGHN3Tv$lOlG8}9*0h80Nu4G2-j4(W`I1MzT;y^0>cm~CGHKC7S{|ozIkvSiKFPKaKLR%&1U=;AA3#oqh>!w@g~a;JfwQs^NQ7eKBuXt-jje8 zgJF-Tp$*Ht=0z-*P#@1vmd?$4=Z-l3w_1x-olKEB{J9##oM|-~=KM-`oZGugb;tWu z!CVD5*iZE$q3|x~FXFm6o7Yp;P*jgg$HvZ1X2H0K`7;%0 zih#R|;Bl7}QXXaN5Sc`p%eDB0v5l_h$c_wJ1!0;l-;Lpt9+7^9u69)zn^X4BXFu`9 zUE|HEGxTN3&2!3dfM&wCYV?q>g4(jtk73H^vNX+>C@)_waNf~5d2*A-$ajAS&{b0~t@SGwYSBayFUY}vtT6Ha@FDi+%gQD! zFYlEsOMY=N{B6b_##URUrly*Q6&yUz>YWFHs_FeV(roTc)@#02^!+RD+n8TN4A~Dl znPAzpE2b5(?BJ6SULDX`rVfpayk}o}{v2T(hi=yb^M`if(k_M_}r zN?Nao2)OPm;jQhiy>Pr;%Mue7@m5*_jf|9-yGz1s8a$p4pdC<5_^kIo5I@IZ z|4<0R0Q6w)jSjxUVK{KJpZAXwuid>2Iwp*ja!AR@SUh=LW*e&xF1qf!$mgeM8O|2D zIv-1c$;YEI3b3gie{b<8PE;~c#Qn8!58zfX6(>FRrPmG=q?x>d-y0t-|t|1*R?p;(AKya15>z~2qjM4^Ol(+gke4)~?ljf1ng}r>a6@rIkZ#^Di zu?NjXKTOt903zf(En>8p@#1Q(X6h03wJooC%EmG?Rf{Yf0OQbeZ4c?hC>;q3r8oXd96!s?3w}HWSr5Fkv)f{`fY(G_|(fI6(v@6Id|n^LuIupEi=rk z_;{Pu6e=CwMcfz{2Rm5plG7uE-RKaO56ZAjpp}|3RkZTIqw}c7`=mxOJ~fc7Cg+r8 zw43`&w3!tk4TJb1&uqx0*k*1W61E^0aQ)&%BV%KQBK2N;(q>g)9jF!Dp;y*E z)Jt5)XkFu83weI_taI(1-$?romnp(z5$raXa96i{IPoF-81g(~4GoAAjspa8n=c(0;34=oGlA4;s z^E&-fU>Y7uNJvnN0-!3*&nFpot3PLG?4aqc*!$G2;twA_43@fukf>T^y?m}9seX6W z>Cx#0sPQyuJD6#n(OdoLwg z!m&&m``3Qca0WWaCt3N0LgONk+v%SjT(aiX&ND@*#0;KRGS7+pxax9Px&{Wnxf?nj zleKE(zB)>!3rTH{skm9IN5*tWefzdjTK73>Dq*+vNuu{JUMQ-rW@u?F6Qfd$UhFXw zkTJR(?&jHCJ-Y8SI=r`T?0+rIPS$CA5e2l!p?uz(_wLX7hzUzBNT2$nqvh4ROSEjb z9{p)A9c|Lv?vOE-ASH72Xa_Jpj?a;vmR9T-;&oa5LY*nV&dC3i~ z#{HK>c*1Nc*i2W4S7y#p!*d-fd(jVmaZ4!OWoTNtY^u)t0^lw-O)l#3Jzw2hOpHu^ zkug4ABY(xu4`ftb=Qi%ScUa%1#g79Lr=T^o`dP-rwiqcYghmt^4XK;^8Nt|;Xvcx! zdb}aLGK@4XqNnhmKHPg?WNl6D36n;SGH{k zdmC~IthT$k7tfvR@FMO`ZNJaOJUcN@ap^jv|4-NKu1tJ-yE1hSi~;R?ca;Da%`AQ9 zzF*}C$Cm6SSr2`jEHbr`?JS@D9Ag8>217nKc;Z-M>M$wIWgfr}${~At2F3%o-iFac zrTsI)W}{E$&yruJOjgz9b(XHjq^P|nv=IWmBO_wnR za8n+qJf`raUrfFYNt4abZ%$I2UfA7r`7H2RE6r~Fo0oM7$uC=c{2ecXi>>SG+)t)T zQ$o#al9vN+c`qOHJ9f`U&PD!jTbhg0OeOBl3=tw!IL zg^i4adMIZpgD!%zoZJyr2w?HRvR@j=@POxmIgSKNmJ{52b8@7%n&r9&2c5otb4(~Q zM{uLRbtTEasBzqw;p63{yVBoiFE49n!zk!Ft%R9@#-|aJU?L1$`3s^Al&h3XT$Ena zf1W#r4LsIx3>Z*NqSi3}S9zKFl><0jtS~M_zM7_|I+H-d%!5yrK9(appTCm4RPM1i^%DU~Y zjzen0Q}*f8D@BEj*{bAGquptF7k839r3O$aAc9U$SVNmMQHh4Bj-0&Q+#W-Yxjy&p z)o~9`&(n&R66)8YKkv?+QdDn*TQQFCrt~nc^PyQ8fybb}keuVjLAAyhTJ~Oi6Q@$h??)}$fG6h5$ zB6u47{EudWeE`FPa#eJVyADDDT<{E~j0p)&VKy6u-%bPtphQ99SLb>bubAT0qejez-Xp(HFkuCl2!t_7i&`wmz@={4- z|6Qx==Npdi)n)!qvqc*Yz9M3!|J}^BQVOYPbUyB%w|wG3d@@(poRWyaEXU6S{`#_h zrARhS`Q1wxxL-d!{_bOmp@OHpU*d1jl)wR1T6TqRSQHXd4_@w{l8uv-8V_(e}-(u)1%5GQSsM-Pk5Bs9)!bB zup=B=I=)cRkw+&@n?rfiH9&r(KQ z<@?QfK7QwQr5IA`qDWZBkKY=T{`|-k6I>8N;do*G{QuuyU~)gcNJrzf^jj_U&o{Lb z*<3YhRO>6+*SUPl}d*o!M*dIpQwGP5KjNa@ku~d#Vn9%ERsHpjbp!_*cRA&#Sw^zRTT zIQ9J+1nlS-=+ZqSA0(gleNN^YZuKZdJFT7aJsC@O)>NYkeE&X%$IS}jO@Rq?QrY{g_pcsKf-=A&x<>dmj}isWw%3BIm@CIbnim2D zI){Bmu6^CswaL5BlU}3*#qrzG($WI9EgbVVi1VM>xJuo9JMHS6P17-tx6F27dmX`m zsZFf)?m?%ffh76eo%ywsaRs?-Tg#HCWga| zrcPIvn}&uazs&8~vri;S8S~UcRQyg)0uFX?^gxy(*MPYp3QuF#R4 zuG)PC3p^iG&Huj15b-ocBW2h{f_yZqH%qQNJ3D766`KPmRYAQXQsTkI4B8Ya2nv`1DyP5drkL_asjBlF7H0K;7MP1@Z)Q z-Cemj=B1~662I4^!_BTHcFx++sfP{zFq)z!O1{yU_adq*s+AEKW$&}B1FjIAI~R1E z1Y=+@aXeg(<5&2r`fV1#UUwJ<_(PjJDfJLi2(7E6S^131boojS>$i&&mt+N51!4(x9WvY8vGWl4xqpmuP~r=tVK|Dr;e0CIkbV`3gb;ceXDBM z8)jz>>Fy~tPW{WF{KY}j6O8yRB0BZL^y`2zRzNM4g$bsHMJN0enW_Oa;&vSVej7Qp z2E+i11v@98pY<|)RWLO&+6!3zFO+)X#Jw|TB$$ctT*xKxs0B2E52vh&^dcTP%({A? z`*;`{gT?O#D`$eg668a|6kROl;IP|P^7JJ+(CP3q!6ex?HxJU&vq|Bt?Ox@poEg<^5*Om9XsloET6_u~igh`xCnI*}K%9P7jw@loop z)KRShR=b9fJV4+Gh-#uR%`iGar+~)clqMjU_4pyMAAz{ikNnhYe3tO)?U7edh^{s& zPxo|9O(3&$X7*Qu`kM!E;=Z|R##;QA&2WozpSxXAey>esjyLbuJ5Q3~%pzuR;*Zbk z{FLqND`0LAPvi(X$G8r*0%W~!#204{{hfaXvVhh?b|{MF8q_>qro2_x&b&Xu>gr;= zG*GSRr;0qZok|}kXSQ0KK*Wrfq?A6d!$<84h~QBJMJ1d?i@L79{>;cQy&mrOtNXKU zkk&RMR5HfHekX^AR|o=T^nM|^Vww!dQuM_X7-MpP$twM7#L2d2o)KS}MXQqW48Yq z@A%U~-MrihIY}XQFj^{1{H#`?NX16rdx4xEFSSTqeiAO*%R5~8`>B~){{Jd9R z@Nas{uhZa>0d0z`aNRCu*co)`^OuEE+(?5-`bXl!wt z^oin8E7406NSl~sDQqL=dyxk^`+?Iyu^cF|s3C?a7vN#3TjhljVI;<(B)-&xl+%>y%_ohHaEDa1h zU0rXM>PjEd#Jiize7Mj8EkuW1Ea;f;$4v=hA~M1lRO19375omi7F077>J~LQ4f~*+ zZ!}4Y8~54$@ss#lD@@e_H!Z6fju_vRi0>H~-C3Vu0d4u=osWT2izsVKe!K7q$ceT` z3N2NQsMFcI_nlmUVQ(#cHOa=4s1Ows1vmL^WMrfvO$8nldR1IC=TDZWxexrRs;Z#Q za@(8W)c<4aEx@8&yQpCl6@yY#BqT)XP*Pe^QChk|kVb0gRzXlnX{1Czq`MhVnxVTH z5r*z={ypdX-}idXcjmgzD=*0SJoD`PzV}{xt+ju6#)vZ%ieXb^XW8mwci=<1pNzZz z#fk>mPnKF0b8R#Uy)2{rSEuQWl;q@CL08$2W6WiS_ZxxK*CK+9Jlrg>bJ}h#19GF` z{hpSQjFy==E+PBfPO!KjtY#1B4kUzWOJ4%+0GD1~L7{uwLJ(p1At1nl{Ua+Vnw=(U zo-n~5#IVP$Xa4x{0Lv9i^f$B^E`+%H4sBr9)`hrd($ZlUsqgp_Q7;eXJ<3)E%2TNe zkA3YKF0O)n!?^LT0G!IQmdKOkt|a5fkCTNEbnJ%>0jn}Gyq9Q)3r&UH_j})-y+qFb z5GM^La`9OI`n55G8}2pJfd?8Sc<2q$1x7)~E=rAoH`g&eXqTp65DZbVvA4XRXDCxq zQLQYC1D`kaqy{*wcRsRy!ectQR@>Ov`0Ggoqz_YBwIF`F2;_^sL(LMamOaRibW{!Y zcF>+JJ)>h|8!%^lZ^M+R+J2#bh)IZ?+dPtTrjQ~<$&6{IfRfvs^uPz#%5U5=ySeUw zHD3rZ^`6pdyt4lJlZdk20z#+M-@oGx_lPn-q&0u;t42;Z@X5=|oAN1O%gfiTrrc&l zynb=nqK~JipHwAmEbXA%oV8Puh-(0^g0|c>=7)CB&urn4O)u5B^n^l+Y1=yQlZ)QD zvrjY6pKq0=lg2qwfaf30WgLIiaq)*$=xKgpYSNVzG-7GEugJ{()vOlIuSbdUbG^)T zS&)UQUra43I$d;v2A{F8A-1Wqs>AbyuX zAny826%E&qPV1Qgw$u7%rqP$)@j&nZ(5^mafMXQ6D}4vJC%P_lIMJ6bRV1qFsTY}D zGd7+9aRbZA6%TZSk#XDIQcH=-fR-Ng7wNc5?Gmxa`v;GrZeppmX>5z-!4LY zaWgSVFhgZ+IwfybR4&=atembQAuAjB!Fh9WPH|GK0SC#Mc{;f~ z5s#7ayUsRTtQ}LlG+b9-FYI#}Eax1Ryg! zuKN(GAmqHBEGIG{N_1-X0eohUhWj)!`o>Eyd%(c}Gm0&TuF%Ns&S!Xl!VfH$c(eko zP=kY|hAr1mQYcO}jap@>w&cA_spk;oSX*BYBLux$xzn1Q-}RL1DzJIl{;p&EtbY33 zCy=wK5{;F&8PoX?6#%z@5VksQy_z}-zM7O;^@1vk{!G)k?i93bJkF|a{wBNdra zs*v(=sJgSacT@LBn+|f*?y-s;ke`CMWedXNI=j|jd;2nIM7UoK(m*9Nq-%gdDG%iM zO5|x|k#kK`?5$5tO~LO_ihBG8IUKNoLBZi*V`Dm)`vxmqyj6XezX?_c3POgcWcaJ1 zyjCJMzo(WoOSHALK!oZBXjcWi>DG_eE${xl*(k>aol*^$k#F2F(ul_ z=-W3V=NXH5XTRS^idU7C6iz)ktF-#yLb&11PUGNR)?8K^_TibM`5@zXXQOE{&uZtW zxV`p`qpg7_3hvUN)jvXe*)%pgGR@!q-=)Hx}cEIb*P+`;7?vdurq_m#zb?a(9ww0nsQq?_#87e^`_(SYGY;iiQ~So9Z40JnMSG2To^f^Lar zEo{?MkEn%RUe$O@h`qmf4a-rF8hXPiNC*5Hpx*IXXjGJyk;NSxADx1s&XO3Qv6PpW z!-)+uP2xUX{F73JW+}qbOZIKMbOXNwKPLfk5m% zAKJ~fDOhgu_itF*9@snPvn($y@6A+Cvd>U~k`T4Z=q$W?nq%nX*inJMEVJ74hzu>K z>cJ25agjyls(cpxw?x==(ua_)L3VOqD?dv{vV)xPM`!0Hs8cTC3mI5gAoc4xoqbXl zb?&<$kAJ-JN+e}}?2RP@@e4$-0w$Iuz5+~28OzY%;JYsyq>~63q+^rwx+~Xw+M@31 zGA~ezxWV4h56L0A(z$1vfFcKh0S*Bq{vksgsNG#x*qudPm$hC=FOFDMYr~E$GV#N_ zHI_woZfz2){y90?K}WK`8$-GdjE%MR^b{a4C>WoOh)MAHe3RN!uKgOj_YD!ZWbUnD z;{^AR)Qz^79$~tN4^u(`xSYyzAc=ehPCR-X$RLyDV*VL9Ge=7G&ct zhM-`FruGz4D|1*HwognXP0kPM5Co3Gm5+F&%;CGg{WvaOXU#R;m@c55si~=v409@g z-VcNrce#v$h$ys0^nD4Jp6HDGBZKn@b6G*lV*Ts&0TESe9G4tex_El-8ySg6G$}ab zaN;;2ff{(P_9A~8)M=fd*w-$< zO3xNA<@#vFSFa?ruYi;FiGJ>!KlAdf^~VBqxBQ>(zh zJ6>L1P+8OF5a0_HdV2nt@AK5EaByG!6@*Fh_3^PBEj5Ki03!76N9ikK;LztjUb$zw zP<(-wocGmTXB3~IWF)V9KTf{kXz9J3W%Nj{M^YgW+g*}qT3!+8ioLgA7zm5WT+t1 z6491I(}GWQd#AwtAP~hB(i+R3A(uc@eZ0?t+35N5g=SBUO_LW$d4Y&s7+o4etbcsy z4CNs)4rfSkFim8FkaI}Y&#zA|t&CMLgd;1vN4ug$kDCst@2@7oc}srt_kb>`a+Zc+ z{YOJojxC(0#ZGIWw*RfrfUfrF(4j_ky~LJ|xgL{5Tt@7=RlO}OEhfHyt!#7zTN;;f zMMXth+=1=>=;Oe^K&-8vsK?jBQs)hox%kJ8(K{P69GlzQ`|fL2-7A6K-cRRNE~;ejK02RR)W___3TvpR+VgYFci=in%?Q41 z*o4xTV#xr;QhS|C@p*dYY@AMk(GnOF1f1r3GvF1i8oSsU{i{QS;%jR)Q!3*e(A-P& zUM5$UWvFEFmM;W;bn%!$XK4;pUdrb#aLtEiAwXSBqQ65d`Mrsuc}*^0_g*DKxmfPm zv)$cEIZXAm*n9Ypj^XQ}&)22m8@dNtnjcFWBowFhDDS)QZ(r`9V|qs{ReYvn+l;FxRFTCXRDx$Qa!gIaZc>OCZ&2E1&Oz& zLr4_PucB1m*>|#$ujVW(+rbI4KU){+a5PVCOy>C(%d;x*INB=Nyc`j-Te{n>T|QQ7 zLswfQ2@)g~aW#+qxkjYRb}$M)WuE;l7Ad#b`)0kQqQ|?6Mioc1Nxg%QF)B9&?ct%e z=c^8lb$~^efZc4ENR7f3$b*rt9Q@f$O|T5Y;r*fCovBe&ZiV)k3!=Jw8Aw#5UbJmO z%K-mLlj`k_!Z8&<&Qs>PW9eglYRX?Di)wu+b^SLK;kW4MF!hUsx}qmS1B{(dO|dY+ zVaW99YWTY#zT+ANG@753vWoB_VCZuMr4gl)mOP6TxC+YT^j+V^YQjbbGIi@oaN9o^t?v9??25g6u3@! z`#yzY=9YV9LnE5YMnPOQUdZ$+NQ~aUe}%5WxMaPoAH_o9vsG{sGNzQu8R%bQ|8ik>4pWRw#yi(hn*OYL#rpCdN(PU$|}yX3k# zn=-HvzT~=n_?*oCHU-bT-;c!;_EjlT0w%ea(INq*&=8M)FzQ64$?3s3B3~*%P;orE;;V?UR?8gybz2pJCqMc=7jBYiYbx2pw`-rJkSm{km z#vRA}?)YCHe3ZzF zL+XbVCwQRl(Fb=jkBJlb(8l zi7Z1|?S~)|2HAboV(7US*OLtLvH#3P{u@;)*;-7IV8gby)XT)>8QWFqJip0cJ9D%S zg1NL<0I`s+a+rl?xMqARp=V_$M+dknSsHOw9qSK^iZ!gPa-i;ucFte-IX>PxI$8ic zO4!x1ImA%xJ>(b!R6^e&Lq8J+PJig`}v6A zU^V)CqMsBQCSBL_sLekV_t+0kHJV5gY6ij^cfYF_M8Gl>@)YTPJZR_8NbU9Wu2JiK z!!xOVQqdscaCLD(@jy;;u-QXPM#a5m^OZY7C0!}cenAB#m{-^MVUj^Qm~_MC*ICwE zw6wJF^UB#J3nABxOp~s!aF~T113G8Ee{RiY4N;jN6cmK?0!J*=^1GLJZ_rCeG3Im+ zn?3cv!Mo8&=7pDf{KfBMd7j6S3$1sY_T@RM2SWkJxchLovq_!|Cxn+SEo|vgJ7)z2 zbp+EUxNmmRV01SCT|I*MQ{caM&t~d7cU~6+1n?nk5s0f|2GD!=C2*GuqPjk87q zMG&&uy-M9_I4TsgA+30CH#3?lXO+~_)6=6^ZiIH@$_X+0j25Q#{`uktpXDKhdkQut zEk<}jYiv1sf6MsE^G;KYTzojo$=&_JB8Y@_0=a!FUQQCqZMVB?Y%>Oh>2jLYttxEF zkL6Hp3g%5$2&V#oBEGu%9{(it7So+tAA<1Z>)ymbKZUCBve@EinN(nWp=0g|Vv}@k zhXZ6!1lLTh_ziUZsWyOG%vG^3X4z2ZN3rnQ?bhA9&)MObO7*BsuS>jDU`O9O^p48@{7m;k5>?fsLo10)N7#fD7KbV_{jTozHwg?p&P$~7Lhu@-WiR1{s z^#%|@;7Ah9B}Nh7x_|$+CWCpq$MR^|z=lx>p+2KTbDJ!>;}vesD}YL? zWDQGhLE26(=pY^8$}5lrH>i}ZByk?l22PKf$4o`viGRmf(R;2w6imYvhvJtLF$H`8 z*;Gh857U*+llQ;$q;9zgOL)HCB4q)SZ83mb56rGN zFYl6Ey;^A0rcrhTwN@VlaoQp5Pg4|8+7%9Xl=nODhng%xX(qWM8WI}ni%(YWen6P! z0orWXp_sMH!kmkOxaO`o*R)J8_T3&@zkK1gsD)zP2@~HDrxi$2278gGP{js60 zZdh<|Wu&5U0^LD7zU`(NPrluo_9aM!TnSFbIjR@Ohwl)0FfJ%b+VQxJPjQN|8z6^f zes*vc>8f&n$|Pe9)ikhgMUFN}XzPw&<6wwVY$hA<$+@4GC+r>V)a$x$$*`ZezjnK$ zsTzxwpE1o;#ff_AfTZpnG3Z{>r!;M*-ghkBT+C3;+MktwORNv+yEkzphwf0d=mRrR zi{TRZWI8H(npJk{HgHfph=aBmUKeL!B5rh%dC6hka@4&^&`h%&UDhpR+}dDfU}yv# zmEisR=V<|TKqpHSkY4c}s|Z*-6A==etL7Xcg~QR4sb0V(m0xH%M()gx1NO&YFAa`} z&hyDD-(;*tiraeA($E=l2bSp{MvgDQXbsBy56 z5R7e!xwod!An@zX-5dB2hHy9>!E!`k4hRyem0W1$uG}v3Y&?ULbEk;8{zd0yte^dA z$eA;g!7WhjfcNlJ<0Gr;rF-^f^Z1dTmcwBac<&%TT<*`RI8rBK&J!t4ok!r!f)((Lp?Rh>c%VD;YR-p{oEZP;{sJGnm5#TAJ zRK{E}*#VU`<{Yf<{ngsu9CMM~FWN0CY*Y1YF(pQW%^X#`TJd@{!^8U{R;i3L1^DNk zsK`SGa5-LF-dRaCI@LdH26*V_7-Sn%rs@UXP&XO@vjBT!ARAZ53OWBCE&CM*vB*dt zyS*(LXSlH$%{9F_14{_OZ0(BYijixA{>brW5395Mak0ftc5gDavc7TO`n8*APl*+E zQgrbfRc(iy`(8i4#2##eDJh~%u`w_)(fH9@IS!4&Tv%()=pB5664#O96mbKOov{*~ zkBXMVg%V)qIrW68r4f?tFfI$&30axupPiQn$I7#pren~`{6i&H<#rQf8s&GKW;buH z>+ehdMrlVk-6o`w>r30v@eS;tj;0rp%~Y*^BV@vDG5mP1j_1e+3?f2N%;D+KSVKua z9zxxSKY)zze*Y;B-QSaSE?b8wCzUM+N;x_`jB-$7P)oiW6_p6atluQTsm$gszp5;G zaSlr`(+TOkL^_3Nxz6T4ea*b*+ty%ShjEU7kYBa!OkhDlK^IlIquh~2W>FuzX0h5H z3E#bY^3jBX(1HstFbATe!bY3C2udGCk#0^}%>!72Hnz5YetwsT zp!vfhz|3rht~x@s*_VfH`hM5R`i%JeeZEhD%S%d8u<7tJh z#{Q#$p4fXJPc>sQCMM|HuRb6ISxbUfdZyEvvz!3M_j$V&0yt)uFO4w3$*E~IhHFgI1*%)l)^r6 zf1|$ zPl?5WIiSUJk5W2fF8~u66Tue4th!CYPwx5FOVQYVelX9gt1>E1z+tp%i6f2jO32#d zNz~z(*n9A<;j`+O_K>;ayri)oh+KuE;wnW9-xLBK9v~^#S=H_~x@PEB$0P3XiIxI? z_}jpO)oAHuGBUE8H*EokHoV^p4d&Llpu@H(yUaGtVuK+C6a|eb`WP1z{8b@M14^XB zLwqNTDCc^Zh+zD&8uBE%>Pi4ngO#@B( z%;!I6_O}?z8peNCsbq1B62na?9wVIJL|9%>Y1fO^^S<-iP5-de25|C_(^Z&L56v^; zIO}^22BG#+8ApJshDgMO!INSP zLeEGn|D9rm-cn+^?=WeIqRyk3U>Nea8Ca zl47LQ$UeS*FI{~CS_l?WsR&k6eIoj(>I6U)b2N%vmddw=+@n%rgC))<#_GtvjHAE8 zUHjuX=HxnXjqa^kU5oH@p2jg?oZU1nV-0u-H3fXmkUKp${Fni-14{lhbnj+|i=;y7 zJ7(mE=Iq&)t>7w$JPaT(KM zygD;TsiA4H_S>||uVsxWTQT)*1cz>(v+cKgpNu{t!A{WRE3UjeUr0#Et5>g<8TS{L zEf3E=*(d+S6P(3jxj4vyF(?H)+{l_K4n_bn1RR$K0jI$>LM5KI1!pZYSDL3{ z;%o{^Dnqgkz_588DDOb_YLk;$r#UZN6hIoUj5h?3H}j}le%*x9 zZ-Zjy6PNMZkwR1BPmfqmO71R=BVE<`PQNIIU}dx&2V94rq6!v*2JFBeNU9~#MkmLw zp*R$BBJ z65&<=oiSKVyO#4M1)lL-j_pEeA|mV}jI(x7gdpx7Ggb>RDI~w|8iqIOowXAH)BYsh zxuCDH2U_IL>n^`|JZFCR8E(>xfXb|ZMk-F0p(8s>MKhc^d~4)qtTr%Y*}yd7>mJ4D z`5&SZ(|k~se}cLm@l2lZ>`DJ!JT@J^A>{A*US}&P9_XG1e*Ex(N8=hf_Em1yH@~$o zV6=b-dazbwm`CdYbodxt7lmy<4?Ub22OyzNiIjz>NTX||9ZE& zx#UMy}Y@4+Wm0tslr29bvkcrM@O!Y$=HS5 z%(4@B0Y`^CK>RyCbN4&o7**azePGDZt}rU(1tC*3s*N$)$;Stu?7Gw42gi1$PHXz8 zqK%mjt~~IkSI!^xj0fGpSb1uD{r zckQ%lTxSaT*~5p!50+AvWv^f_zthq_w3?!laj-czR%9Ltp9U3x486^Y;MJ;FJPMF9 zv_Sf^G?RR~cC0X-~ zwpAqP<6;3B&ll&H%L>!x&cV|mam8H^6HiKm)91x6T2mWn3sbuVuNiBf!Xw;V5PZN4 zrKj(ig!bHM1w!^%IQf_+k+HFq&@h479h1Nt`>pWJtnZaKemGE=&+4kYA_sp6%)H*o=*&^%M>A+Tj|)e-IDMF3Ww6OrR9#RyeSc zBu0F*;*X6*c*xKEGGgU`Bt4~T*sRfiPl34v+$z)yt}F0^dHh)U7NF?in$yP;Z>RcP zAX(=K75|>O>GFT#saYPxqW=AoL!S-EjI`4LvJYblJvyS0^aGd(_%UVBu>ykUr{!=> zKs=KpXZLy_@xqYeva=iVT57G#M(w|siC3ZzVx*pdv0+88hHl9b;XTL)0((g~Jp>@T^gTZdh<{?K4C;J*B%X{Z2EW@kFNS%-u8 z1>PEueDFh2P=D;%($48hU6q$6{Iojz>6v5EXRhPY@^Vy;xEP0)3G|fn-AzosYdN^K z+&?>5{j^N2#8TT(#@c$mgr!>^yOr3gKF|Tfv@A-4GN?p#(Ykm9KGvXKn3|^MJoiIP}ZBdnRPK~x(VWsAB(_AOUAjiYx8wI($5qzYY^dv zq{NNf@E$o*Mos%>JLAlz3QAj}? z``^Ojd&yy)iObs3I1>k%2Np+6u3s@e?EEHUp0&NFlv(B(LgQRC4p>f0a{t^`GjmZ& z1th<#x)Uq9y6mvU>O)gw{i{w+0{5J`a~}A5lC>i?`&3EL9wRS@3)2v7*qc3Aa!kwY zG70PGjAT_$AMJl}*Z;;nv%%a6NIirB5tlWd2(rl5l8GxWc<6NwwewC-Pj8M(52=P~ z@{)-u8Lf1dDuc3K5u!Yb*J6Kr$rEE=%CJfemY*fiCWTLtg#|Jj`fG^0ZcAeoR^Yn^ z<&vX~O{i}V-?&o}R2)c`Z|xxmzkcGHp0H`Ah|@~P-e&?4f=(qg`gYJAyLt_+a73$S z?SlfookTT-&!$@yRc}=#vEk5<9au^a)p84>MBJELPwX?7fWzYMwuNW2pLmBd^aXqy zM-cpLHoq&Kt7o@d4834)Zm|;dCeCJOzx8xd4!XT91W?f_l3l$5CZ$WgD^pLB_#*S6 znRMq)%JfyxG|K>MQgO5IyZoc6qaT;lo`a!Dm??FtboBm!u3#7e*xic<>>mOUjgaa2 zMy4wxjuC>Vi+X^F(t1M~;>g)u#Nzmz|Xu`B})0%Mg{x{@LzcLV`E4q?v9 z%$y&{;R9T(Ox=ix@yZn{!=XDIIf(6#o!-!cf_|vh5DoXH*nnkP8Bbxc22&I#-k73~ z6|7lU2gWE|Hud~M-Re_d(gK~@U*N9jO&rdwti&4?wjJ3rpz9fm8ET&5XL?kluk-Bl zN{Z&&N5=ufi(?HOJA!9|aiO6O6pR=p2OFjWD>Rk!15N0gK}2zmSOei0^kkW3=_f17Q(}@RS_g=4a$1p$%AP_SJj&50*lewd7l!c_l}S)YjC1ls0bQDWvqN0GfB#5djzt#F(giFI@m$0+0Ein}Q;Usqaxy zYIEung{F#_`*(4sDZtj;$q59>A|k+QoSf5@mW>ktM?7tv*5y@usH^TsMMx|?^{2!# z!gSG+Fy{ceHuejAO%>sxlXffpGJ%4Xc1(*sa=x3hU1I|!3UJ18R8!KGtU%p$cwzTa zp5Bpoj2LhCV@1gQGzyHeDzOOPdR|z<2i@|k#r6xuj^oZxlkyOdq`&HbHDS=y2~8}Z zcH9)OGuhwanlg%ykB1(G`y1mkhsNQ|80c!V?fF27Jo(A7iZioI>7{>~m)d6gN9whH5R`og?skO{2_UbVjAKtv4|so$>c3 z@tix{_ctkocIk9=(Vd;0dmE%t&ixNW@}TJtbPX=8zFfUWK#+l6852{v^TxCk2A-mF zx>A}%XhU&vF`%x`eXcU%+Jz~0B^}sfCraQ{|d)e-6SUiWlPFQp{+NtAJ)r z3j9YN(1#_k?6E#O-<7)KyKd#Z=#T^Eq$Ko0LG?l|n}ZAqZoK++tNDh)_5zSQETni> zcPAygA2}tjGoSdXz5vG$bun&C@UR#2Z!`Ddwc4B{I1fhHHyRUD$_bI~0blkT@u5 z9KzhJ3i}1-vDm3!5^vWpn{>|gxNa}oGbuK-v@BfvJNYqF8=yT$OW(RDuuzQiT6)$_ z?nybNb=f9kQY8YXm6VDKiwHJz-@UV9H{XldT_aI&p6jlkV<3VjuLGTCOdSCkIgeRg zXX2wNV8?5+ggjVc2k(4Xb;mljI~2`($&fq39w)W0e7KO~M=y8WZzoF1x|;$vd-U5J zEQ-@?Wt3#jeRWpTi_48K?(QmQr%QjpEG=#Q`sua#Ne$>v&;I(~?Zv%`joKo!dnb|3 zA9>R<_K9ZsO!dt~enZ3tQSLeKD?2WanhsD zJ$Ggix+>hmorQ2%l$Ht0bpo$zy_4dzQd@Lp`;93XjM$H{E_z2BcyB(%)e_Kh`ypwo%pbK>pv&$nj4V9znXMa#r=cmrY$5DXH#~=LCj7 zdblVfoW$Cw#5GkmZvU58;J2XeiXGoj22oEoC)kO1#xo)f8z0kml=}BBY#e%pidY|E?-^(@-JbP-c@M)YcAm@D5BF}{VIz-f&armxi-)vz(9@1!hqa>&H6CQ( z9AmzPW_>E{fk4}GsgTKyNQo{%NFl;eId#3f84TEd zg-WWdds^%VOvY%>$513OF zij?Tb8T*eKN00A@0{Q+&iy{~$_hp<|BT$|%w zV!aEMYTJa{KrvYW+8g;3wU4g|bv3damSYpbn;-O0o3wpaMm3kzn`D5LK?5^{j`h@3Jg`_!9qbr6 zXtz`yIphQP!oc%zZEFiSb15ITFOjxKqWx|_MRh%ajYM;*_RYS2AUUPO4`BwA6Bs>fZd;{j9ZtvOgn0_X zc^h{8Np|+#a}s2?33v4&r|RCPM?TPXD>P_cL7i`*v;&0B49KZmHdj4Q_MyKXOsWm@ zt2#P<*>ci)mz1bNc_Y0u^j>ITDx~da^c@1C;}V_rbC!?E^qRRNUZ(*0D1wgl9kF7n zM+RvAiOBk|#1MOcMBKM|aP>q+Q zBH2R~E__%Nm9Vz9o`rlN{~siw=KhpX=U&l7<; zWie6=qyFxp2EVm#C+O_IXSCfn)fWYDSPPzEh3jXI8Gyi7hW8>XT+OcNv9N4apJgdi z2;C;8SCJq(mEg!}QD+d{ol^4ZnCmEs8*&D{TA#&nM*mwF8=l_zF;| zfWs)@w)+CkQ4Bdr(no3j%I|$Da}-w@)!=(PC{m=@`_DY)hkG+VK#?NjSq3hOKUq)s zCp2Vy;KI!9{sk_o{m@2y-!l*Rb`~S$PojghlaJ`aMc$4|hL+FZ%i+Byt{EC~o^03x zi&p@LBD#J}E-m%tz4QeRz|MRh*OAY3kZ1_N79*uLan+vgN&E0m0$A6&+2a3!q(LtB z{=*?*(nwAqecS_n@0`^PRKI6gzbmE&g6N3?R5M+^%7EYj+9P_RCF;7(YB;S+>#boi z&k)plc-=)lAU`FXf05X z0jZ6a@x4G((Ml;*Umaut86U#{B&!dcJ0@plMv{yjo$u9NIM6IKsWR)6gpV5$(61s0 zJW)u8nSE(6p?G^_^_Qy2LMwmd5jL5lPN>O`q=RA9pQ`gqQLAwd1b>Cxm2c8}4YS7e zP(GxH{Y7P6O7pR&NSEsJaWR_l%Tq>d|#+(s(wYBY-AwX9ZmXIuQhdRXu;| z(uuYUWKu96Sk!sFw<|BXpuo1uT{bK@7`Pp@-qtWw#%1&b0h)%X{;XM$ERZt3SXy4T zG&et3KfrmwR8gx6g95?$8`w}46}}eJ1)0sDQUGasOl+pDbuI@CDBzS9isWqN%I=v1 z6?D9?6o7sCB^|%1R^WtygayV?JO|jnH9=ZcAj!BR1lo-Ai;Ky9Mn^$7G&}k*hIYI% zrOylq6)?Q#MLYe_O;2Ef-?({mV^+R~!pcM{9D$WN@AHyP_j299hjyzQOeX>bT2fLH zrbN@SAC>Y^HdUt6ASmmE#!U6ax+AgRRYGkp)nB)CR zGO0cF4da0@n=3ybOEr-HVS+Vk1hXc|XV0u1*fGI-{>MKSXz^4>CmX@p?-TqGh~(-z zbnr!2S64^8F!%w9vI5sr_rg+8v^dBLQ*LoDktWcW^%9IzKEy8gR+}|YyUqP<~YzPL63=5 z3zF{sdcssut*--ppefsFA&KWM>r)bvk{_Xaxc?L{2PH^v@WF240ehN{BX#^&x#;^d z=2AOnaCG#}02b7laRs{dPDche;16f!S{iVucpb@co7Dl^GX2W^GG*?0OK|Ss9nH6x zPHA0^R1s|S`}gGIHg#~~gAK_PHM~t(au>y>Kw^pAUt(mao8eVC{5R?pK2s1zpNdcD zx3z)TWShCoLoDX)U4M}_;?;%gVoej_V&~yqhmrz9qp@=5*M_F}=~u&P>;Edh|9T@p zlLVrK%cD7u9G|I4KU4E3{`sv0rQ%|P{i%~FH`BTB&J4D(Km0**KEN7vDOpqW(fItp z333#i*N4(CiB-<={MDI--?}Fm#@JP8N|LrX(_$`$!|~|N>HhU5MWBSVVA~=O=zTRn z;9IL-U)}uE9T}T^4!G(P7wS$`c8|N}6o>X~EDX1|x97(J)a5jxl;A+2Pu#3~BGlI{ zeCoAolwo^>H8;1}qmQVM zb`$^nK91>kMWu6IsBYxHzTafbU4vr2^N#V~t}EQVDq>kzAa4Kp3(1MsA@rF45qf|9 zjV4`gGrbh!TmOEa!d@46Ebsqq#`EkEo43xL-v7E~m9$JHF{}T&<+!_QhU|%)~!$=QxR*Nu}liO`L?Mul6{c zW|g~Lzd+bDsGiOR9)F`%M;x@?;0|>U;iN-(i=Th5K+Xq?9G~wh(wxa2E1#|hA@!fH zrWtNfOC;snajcgBQ|l(bo01M>5Be}PgtaevaHIs&KE>I@3A_DXwCs8L?!3o9G{fvK z3}j1Tg*iZ_CdLwj{&?+Lb*qu#yCfFd@vY}TbAB03`XzIy!ZG2j7pv|U36iRaw@e3H zDMzgd-y%nAQ{(hK4$PYtzq@`bB^?GYex<4BmCuDr_gRWh^ zY_o4?y_uzX?;a@PiVd2ttn`1^0W7gdz|UYAORfRCK_!^b>IJ;Mq;ueZFxPF!RDKof z6OUn0UDGW4O+@P*2A0rk2UcLC_!5R$W~gptEHc0h6*CzzvA4uuVSF`=uDm;}H#$~| zi-&6kO|CNA5}*XYwg&j?>ehzL3DGTYr~S=2n7WPRiEg07me&D-OIIj)IN?3)4{A9Md-TPmxR z1#sV7jPhH-mHU*!&x%Ub%N4h-F(>;_P+b%j_jHIYDArvO5rb zAd*r`G72DRl!J+#+jyG`XaHl|Uu~Fw8UPiJhzYuX(gGkss%*8Yb%#X@+Q$mrp+CHQ z%k7p}c}6NtH^N&~lMxtZkGKjucFdw1q-;PJTSSx6c)zc@cGGU&&i%wC`sT9~1s;oG zr?nNScf^3RLz2X-%xo{v46>T0%ds*sJlK)1US3BXw#JueecS|;(sML(EMX$dJK}o3 zn9rPCjEpARa-vd(U{q?<76TIaCsv&+<3)lmPEOI*)%p^7o>(+{f0#_>?G_D7wyGBC zOIL--p|cQ>k!;#j?kpPT^X%rDs7;Ka>_%k_~!MNQUcwB9DR8=t|%CZUCW%;_*B1fSi@#kql5X4%NSK{cD z)9#w;^>%#C*%(}Gv4f%H>$01SABiBr#wy@@jDjo4L)hHPx8^0Wf71B|Ie>Sij{W=; zQ`sm$woo2rc`UH00xdi)E{tTfXTu_`;S5qo)N0wy*=D}b3OqsC!Xa(_c$F#Nx##+v zH8dAs#;MqQz>}p24k>!AMzRBxfa50)kxVbMJKRzc8>w0bt@poZmVex8Qv$b35wV!@ zoaNM0M7H&eLc5_B>KP`zFTII?km|n4t)~1(jYL!DVe&0ZHC-sq8pzgR@Gd2G`T64R zv$e3TqlLbmoYa8@MFoXq@(+*^E2kG;H6Wv+vMkR46>W}2mSksI&tJkJ&@h4S_;$h* z{+#^jSSMimA0VKYqO{ESB>}jUbG>CRwX|S*W;~{{l9G}#SyFp_<3u-(|7L8|Zjj1> zPvPwHa@Fr3f7?J@oYk7La)UM6KSH~*q3IZJDrEQz=M5zn*h|o5*PUf9T3;38Hu=Rd zFfu&c|6TnNGc~{4=GtUq^wLjYz<+NT8d7JzeMh)!uKP@JdY_rO`2ygP<^$PyXU{I} zn$Hk%d4%;?h`R2xwh;0GRagld$WZHqlU$)fajElK4Bu{vi?Tk_m^XnofpSt2VCuU5 z$CVZp#egraw}$DA>nKcs^@O&dqh{%^fu4uP(CeE1_OA@7lAD|szvc^eMaBVS+Khp| zgpYS@I4OpV>>V+vT!ND*0zgqn(Pt1rDmbB6^TzAV!Ol{}_2`Y2z|fk0)m$t6#}9#Mc*1wK1V5hDf?`sr5+(AY?r zY1hejYW|7)2DJ}+UB)dw{qe*o#(qTesJ)_w^aQRdT^n^q}t9Xp&HXdq+q*Skc>YwztZ-gNj*sKJzOIe{6bnb(L{aVPCvghPE!6>u3E((S-8u zhHt@;5yWmipI)7gLGUxr`;?SK%6kO|7g$d&QsX3^9^1?YRUGhbpp>p^H(}rymOHZisF4+6eoR;)WOI0%*4vh8rc2jjVtTtDP(ZH^ zZy-Wrz`+Wf$MZ@&MYIi}vWGSW1D<+AW22$7$v>Vy4y#xe?+tDjshwM*7eq){pU7RL zo$t$u(W8JxdyatO83saVLbcY`ft7TCGp&(;Fro!+lgl$ITn~jXmoY0fFnFBYHM}$5 z8*)*VU3U)+_6tMR50CJJbn3EKt9=Q(77BJn-^6Km?aWs)gmdVWmbz?xhM+xRfj~c8 zt(8u5I~hj;Ssc8kgQs&py1k#K7^#ne}GxJ*u18GR(^STSs?%}7*c_zjmH;hg<4zypfD(9AtEAT zDsh_K>m+jBwqeIip}%-Q2cBzT367u-9|8%9f{4X3wUL%f^Y(B$a^2WOk?~d7uh6%B zo&$>^boDr_NwN1|6jNQdX0^*cCWt5T+tRCv@WAQ?vtphZ>VK`xNV%*M&RK%=Op0SZ zaJHl3cYDn28nMNy-hHniLT4NU)2fr#m$fSt6%bJfq-IGrVy|wE1iRpkcc_@~^E9^1 z=0>WIiW@a8v)A=Evu1OpJXt8X%?_&&c`$M)`eykUG;r2o@p5S63)%|QJyx}N^{Q&$ zNME8c1ksijni_T)goeeIW8akL)9hE~AypbbdGp%Kb!Rb@j#Ww^B358YlY)YR4;u@d;n-hmbpdSD9XwyNlJ-M$L|h-H{AO6c-io%n<*` zc#`VM?0t9UHxC**@H)F9Z%)EiSD(>(XZV>%u>J2kf7#m$&zBR|)Yi6j-#n$GOztHK z5XFV_w7`Ug&6}qhsgc!hRy4N|bW@leD`X(&-sIcp1kMugNvGI*;QW=BM%=4*|8&a% zs#3!RtOo3lms&&vjnX+Dy@;I3rY7^V7u6aYM!~}VgVN;01hyDz+5T7Pszx@TfYlj=?l`JsAGj;C&shDF-(A8!m_uBIzqqV;|Vf=(J$OLQPlU@m26N9x<4l>L8h zwLi=sB&kwFHLWYB4p5l&WjpU!YE9G>V~v}jA}fBSF6H>|i--}wqvWk#H4oE0swlaJ z{|!p~D*D>B(8pA#_RnG+Cpm@pyS-U>itGPA-@h(7xWgnftJh_%^}pa77cWWUPPP9) zX@+TfRhZYYOwm7IfNzM+o_+X-ll@;mH8tsF#=ZCN?~3=Dc|9k?|1S`ue_`wYx&9mS z6yC$#?tlJs@O6`8@43W*xoFhCTzzQ>ik_2s|L5IuGm-0c{ulBz{G~es-%QH!UpGbL z*)^Nx{qR4*F^lJ9ALth6RiB}y4OhqB&~?gA^!v2`u=WQGMJ6>pSMTD zRwQZooa{gF9|#(J=J5Y`9}@+9W~7eAe*i%9rEiSbI+X<^@BufOkI?kLaU5rI@9O)QCE_l7Nmr-Rl((G_D6nD}iwJ;a5Zvr`*tYlO7O>pkatMlPN^j|s|_0*7%v^oM6o zPJ?toLcRH~H$0v8Yx*l@Qu>vz!R(}-8CT*1ijtt z+BlNwmV$;xf1NoA$(14+9-cO{B8A(%8j?~{Fth3L?fbW#f}b0x54>CdjhUGty?*_} zGc`41K|w*J`#`n<+xN6IVQU&;&U~qnDc|e-c8p2+`Q7d9SFc}p@OcFKb3T@Z-1lm% z5gXe){}%)P;oS7%dHt7S`|EH$q^zW*q+VSw4m^vE7h(|(4rXfs;(?TjXKie7(}-*M zZ4)bvZVJc|{yXn%YA?ORn3q&`1%j1CeyA9 z7JXBDry_aT}pY4gee-oFKOlsDPz0nHKCb{h1TG4A6%rD`c7{8S4fbZcW9@>^Tmou51je6?_lh20Y+o!&mP z034r>8Qg8{t=U<5tDBp|L1F7}@BV}b%edLu(E(Xu=bsxJOJ8v#BO_-xpH;eoY8hir zB^%NoZZuxWk z{C2eMP;v3{>FH@18JU|m|AbbH)pbc-Aqv5LG$twE+q4`^s&!2BH>`nduoVZEbkdJh_0^XXIXj8HR|X zK2jphNS&EmkcKGCCy^prbWYB+(yln=3-EjT26 zfgdI^Tr$VZhAHI7Ln}LNk;H0j;~O1-Ix`Wx4vs7)cr4yvlGi z&0%QE0=73fruIyYpGmVR`ts*~|BUgAFmqg8{SU+z8$8OsBF~;Z1AQuxnsBP7kAKC% zl-=ImmfD{C+KwOBiwc+7me23&IksyuKH)fd6|;c4ytrXl?FD`{y9OE>*`-r6Gv_ZX zQ^o^QGSo1gCEc1uF1WQ6znzb&v*$x%7}<}3%2%Dl0W^s)nv#BA#N){jOlsYG_cGD5 z)0{Z;Wl8|IA5a%}VNPwci7fs-nauVkQ;zoH5^fnT-le~`7IyB!vTliO{kxm{?Q1BC z{B*`e(YSW=YPFj;-$$zfDqhUfD&Y`wDfN7c`_wIeg=j!+dL-)VHVW>V_ve(73CifZ zGH1?M?LL#`HIjX_weslhl?7?#$S1tC1XA@T@vi4=64`cLO-&Zkyg}HqR1@6XlTyl9 zF)(vjN@RnaCL)6N*7>4BG$r#ENKCjJtgPr;U{-q9?<# zvLDmatLeLmJw`_A>TrM+dA;};5Kvje??fqBqgQV>fK9NfWMH4QFSPyIUA~f(7>4+h z0>kQnkABi}n7_YtBt91@bdu3a>l;WBl;je67Tn;Kr!te{ykj?ZO{E zbSTApw;qK;r8A+e`%dMmv^*5@@F-g(z?2695ZbO2=qeovRY~oce4>9d!3>*0{4E*-{uNs5Y!@_*9H8TF%nUFfsnsM6uIa5$zngwY+neBNv{N7rGI zQfkBYPIf~sK)@Es(G*t=C4`9FHl9TlA-nX)vPZa0QNKe=0?;rI`Ku(5g zoWf8+7wx?keE=6{Up_s3&vR-JKQLxY1IXZGd!>X|dO+ZFZ~ zFH(U(Xb=L75JA&hi76?@o}QkMA9q)Ij`sET+K)!B^r&G}Vz1R?9e1%-P^gDvccTf! zfI-PqM^h6{BVQ6pR67K{^MFE@-4PQXNq-ek&+&9A8Nf@Q^Y`c|o4&SJk^tbo}YnI+gk^`7AE zN@3Z7hmLl(@I|Xe25z5oJgqUgRW5CoOyRuz6;>h%fK-E1wCwM{-;jstWKk_%x$~gB z?{R3jF}7fm(W}#W{X~4M+F@S1+GnyNb~_sKM-;y@imDKMD#0o%q|e&0h<6th>Da(+ zzY0t7)#YBe*kEr}Xe@^~7vODZdQI-MmZCI-!B%9k^TKRxOxbBw_!4`XC=;jIGU z?3hnL(N`OJ?4B?%1V}FLfT1#5WV5D$kIU-BdA)*R7@GmmQ;yC(MCw$!E1_~mbH zx$0eeJoU*Yucie?LcXx5h)x~FLdSh!kux+;04M(=Njwre($g~;rDJp=LW#>WH7BR- zp^zoFD`-grDKB385e{v$0UySlc-p$)!J9}jKuKy!VN+}@ESS{>eb`n530|LFfed~F z(UrXW*>`)=zP4>He)srb@DF)B7P@ z3S6W<5;B%%W+Z&KeFq1fV8Vi~sUEktH+3`~;gOtskYJGTZgE(xnvz1-x8Uh-5sYyw`#|2>vq;F%7>(QbEAumy> zoW07gsx0{szdj`Of_J88==Nm5&{5&BGb zOlEKPLD$vAe(q(#$C=4(pa}DAB7i%&D_38~?z#d3(RopWS3&-H2!s`&*>Q7HR2m=o z?b&WS%_u17w%#?X36kE6kAa~5IpW-Dm?RmnJE}GL%-_Gbq2HIVsQ+m!yrtz5Ki;Z` zc0W&Nik-<)S&vKNZ2_s*p((Xq8LDw<^-NMv9AKu>dgG*4d3WU#36%dH zDK{<);5e+cw8VY)60bx~=v>R|5qS8J4pA+S)9=#K5)!Bg8>rkBKLn#Gz4`El_I54( zk>z3$2OR1E^bIVGR3{KFDyS37XFHU*eG4O6LB8aD)VYPQ)6H1-)?7@WIn-0ZDlhqM zv4%YSmD7A|*WKHNj_yONof7;|snF%XTopX4Ebm4fVu!Hw;v}3U*o&6{vw9U4)?L`% z*4Eu2AtrW&Tc*wJtW^@Mi$me39}355a}Wp?SJ(DjrV)p(;{PBJsg0AE=m2FQ|7)6KHM@~L$; zXouO#du*Mzx3`DwtG-^TsIU-59qkrUUr4CSWoWFosx7hmRqvX0Z{W6#>4+PiA2tzg z=H|@O9(PU)?_=?J%z@EXQvoaGS>AK!AW_hFfE;3CwUN7^y2{mr~EbJZl(U{ z4Fl-^l(y<7t=CXgTMp7%LykVxV_V*2uzE@vkuB~6`{fn}x9Xmx=w7L)_; zt4?={Y(Bvzx}ws}8ZmzMWe45&ePE7$>7%uvk80ovkj29MG9bXyi!0w-S@Ma`Pk%s= zY{xzNZYXic{QS3t$Ztct{98tla1Pq6Lpz3&{PS?ww}2eXC^NCQcEsFrhHOPb0+W)m zASc-7^m17iQL8zg!2KWnJ#`s~Nzq%x%H_GP58g>f|NjsDy(8NGqzz8TGoSQwE8PjI zYO-QazU{*tuV=Sglv4S1-_!Nr%1UoqLpm0BghOIagL*J;;=q9y&}@*~R0m1tu%mvo<><^GwhQ4LDsvH`;)X#9l%HxJ_-{*c17l($|C zKD)SXn<+-p>;#cNXHq;G_KLw|Oz6E6)0=pQ1Zk=?bAetCv=)yPTNMRDoW&*fw zMh8syyws}uq4@-~m9NV7Jrx#4v#_va_{Kxz^w&IJe96HJBA9BIpA3~ETt{m(nITaG z_8+^zxsFX^YA$sUtA5`}%Gp$9MLT zUd(MY3awpo*g>Ub#1})`OxRr|dJ|pT9mWtAv)vO4%5F;oXLuexO1fYmdegzU*m5;s zxsy2}Ty}dZ!2ttZU((aR&9->PLVC}3TtS@+xf5|-IR=C=P&qj&HXs_>eaFp>w#3Cf!$)G{BBJ6}ClRuAh)&6%rdwkFa(3&YkU|k}E^5JJ z*WR9S7C8gWxPV#T*XU_8Uk5x#T|GieORLiD{9lvNeL0yFDW2QXf@-jt>{vKgTt>H= z9|e)M_34DAr|NS`1m>KTWJ;h_9OM+8xHAr+~=m&=p06wlfX4bM>6zZ@6WZ#GlV?-Z-Y_at! zH~u9h@D?yRqaj6&vWuABwENX7u}ZSsnC>^rn^ILZ^r8ME&%_Mz)X9^U-l*LBKkpk` z{`&Bmfgf(56~U1Zal?Wt~}GUY?(S&({(O`%LD0^qKwp_d`0F4;%g7n}Z5_kYuqvOj?IdKXRXrk?n-7 zkb1W43&Gx@+v{QxNZ>l$yZ3N-T(5a${OcZu23l&2@J#ee?Ry3pj?6h!%4a9HY3Ue( zoN}q+K~Pn-28o>H=d5IhezKFJBftRZ91e+ZqTL?C`wdq{qN7|Crog}wGNc7)8W^Em zsovby63^IL&Ckl}x^#t6QI2*<8R+E+4mFM)iE8pw-`>AkMs7K-r3IC6>MaJP^o#HQ zkUB(P&w4DJ?DdE#wta@BRcEl|ihfB|d&m_vv#CsGeGvy{W+o;`V!e|~kT!ATcK6FV zImaTvJXB4Zw!D4@5{})MaCX6$VmOzsk=W15 z(sCWV8@jkcTJ3uFs;%vyq^Y^N)t}+{YDpTPdrqPPKJqC7Kb_3SD%EFLRn?Js2qj}z zAjdpETsfQMK4P!`I;w19&sxH*!SIGnK7A-N1Gh8};v9sU@kKK;SB zlbbcfI3Tf;5ur5JZREWUpj`aW=2LMfCzw*Nl756kM)-{-S1h*ug;iV4Lty0 zh)CJJk4AD!xNkGVYO=IFhq#NPrxRencnYnjD*>#l+e2 zpwM(4@H$&OV0HGf0=Glj&7CJN-)v~$LhuiMdZb~!uq$B!s<1sX=D@hKzjjLgoZ#8) z-KVe_D97+)CuFL<=LtXkw99i}S62(u;e;hlDcb93Xz0_qZ207nzLs@C;Io1>*)6lIi0 z_EY7xvvqR$5&8Nv`uFaM5k?q{d`V~!oA1ZOp!5=Aqq;0lUwelM?CtF(jwB_%DO8i+ zq0wL}?Y>dTpKP`ru4sQ;(92%;xL{|Kx-&H;9ZG-Kj7xcLPIj0fqw?}biY%5pF*_CR z4#9SvPoF*ooj04+h_j8OQ*Z>MKYF@CZoOStd6;ci9YaT8cG5w_S$M_R(+Z!(#4VzU z$k{O^T9kx5F6lq+AfNC9YIdXbsCn*9` zo!YSB_(Uwcg}w9ZTfou90KBW-=*|YdJ-&3*FC{wK-1`!s-K<+wYMe^C;z5uN`IV87 zR$pX+iFy6nQY1m)oUAMzQpM47XC3FF!qU=kY4wT?hzWGGv~bC^r6NS}$LmRnr-ARk zvH7jzz1|9C7J9=j&|QJ&nOaO^IE9%UQjp{gu)HF9f&&Y3d&JbDqTlY8TNSaAi9Ps{ z5x?&RvyW#mV>$ZNLLppYTVf~!C{{W%8FHwXbo?DFEVs@LuVN%7K=IcHn|ag zUN8_|PVoHr(Tqpn@zhFSU|^D@8*!lA8M)xc{Oge;r=?7vXlj}sKdyTBZeIzZq^PKp zkW$(&Zd338R7#USNuL2h8dS@kdL)QaGM^3b^zaZ7({puo-5GRcXODw=d{k5vh}46u zBow&UH>7ZMyys}t+qagYED=CZ^x3LC&HU@pU%5ny!R8+|)z#U58yme?JP8JuRaFb= zV3ky(by+7QFeV0DcN-fM6N4};6cTo&cYQcNK0e;n6){}l4w?{obbg2o!Z;6agZRiqZ;~TJwPB zkq@aArWUiXuyfPWH21I*lW^(Bm9fU9d0m6MGZ3W6l6nPc+l_ixqG7qmvFm13C-pt{ zUC6Qkr2uwz-1)_o@m&3qMM=b7*`i3mAsB!u+9uwIS@+XJ_1m|tpdw*oZGH6gEo00h z6aVAF#NgKceEjb`R#c{{%|Q;(2wj8DPf*UImOM{Qeaw9QB%@)aVyRa$zsDg9HRlU= z)!#O9d2f}^8bK}VuIk8o(^<8;hRy1!H=jP7KM!-aZyhrc+)7g3n7)9d+TFZul~tMG zjm_(V4nP~Jg0ZpRkx0y0r8V?*1=F#oyQE0Zjjn)X-@=drRPpt9K3mXnso3H2Ye%r+vi-;3b? z>}Pb}^-(1K>lrx)eQSOQr+^9$8evGi!9PI@F{nuyQ9bxkS-#Uq8kL=0YL82gi5>M? z?EU)B%sR}+1XkKZp+%X;u}RX889q+VZ%Aty_!uWI57SH zT~6PAiM&~m*}Z1han&Be|L#ey;Yvvf2}^}&&vH+1a(ZvR?-c|BD-qa~seTrq%S8hI zm}*#wV^8UNP31JVs9Kr*GlCZKih;rX`#ca{KS~gxQ6|Z<^BE=0n-mPbqfPa|D!q>}cOeXJsm=OnKe%U!FT11N z2|v(xs5IL_H;VqppwQGRNk;EynDITqR}!M`uMtg|DI1ZU%a!yI<;JiALSmHb1C9&V z_^y>0FCB-iS6BBVGQ!v|TJ=4ru@^-FLUKG{XGO-Ils^CYfQ@L*+mh(9-Fb2-yC76o z%07p3BT3NC2?!f3CfHSV@{Me~MR<6sF4E~8wYB2~ja+`4I5yIteD#;L?Zpde85s`4 z71glO;BeC0b8?+h>wmzCzk8Pe0+z*h?hX43a%F1lfa6-E+t}wlj6Ut%yOr=4AtVj# zE6f7q>au;++Z%*xZ=FJ%E%ZC!qxq5Ltt>hQZX(fEM~)sP_LP=xc2+?u4iy>FUb4;` znIsc>ikmy-x``rajr}1HIl+AmdSUQ;09Dt+kRmmMmaWBO7Zau1lZ2R8$z<=j_w0K} z;9eyv*Pz@BI;OXE{kvAa`S*Yw+D5b=?J;tDo{eDf2)O1@C)V}?>Zxi1euepK4V|dO z4=!Q}Mb7)_!>Tu)(xGy_wSY7R5Z2RE354B&=P!Tj9w=M0VG=@-6x392j zfx{!hOExVYiU%&lA>9!DMKrf4aqao@bIjsS=ja*SNal!+BsuhXE{C#5PLCdS5r><3 zz^7IXPcU>R_30eV)IsQ{gol%>d!W(?=_#&K)C_zh=wzghh`YJoJKc4YN{V-_F}?9S zqrc-P{|78u3wceyw1avd`u9r`-Oz#oKe0+DvS&*c4 zgwz1x3uz&no?kn(VEN>+>$WJmnri4i;snwD3_tinG#3Q1kg@3A>FQnIoXGA-(hM2!2%< zxXnzmQYPJLi)ya#bBm;Z<)0hPS>BT)h75`~P3{S;gFNC*h7{LCve{yHFa%5;n`mUU z^_3@B{mo@rqwq|=mSQXSJy5#C2W)awl6|TPmogfuDHEmI&}p83(mjq9%mL@df`%&+ zga!Gxf-JXpwkVYPx(#M#Ny#2qpxQ{E|8Aj)S}ndBMA2J>o+4xGMU@UoI38iZVpvBv zJCO#0yQi2v=j(Mu?1s+qzzT->)NNWwT|8e7zf)@0$})L1JTx>n59pj5vzHRIOh@P| z!|&crBDbn24f@4VSA=N{AhIIX@wLa9T0(&1sw?|fZm+FcK)9?{^&M)eA5-oy2L%zR z8*LdIHha=PGaL?9tILP|`kuwd$H%G3X6Nc(NY*A}VI&aZJB zyHOD+MP2G43?2|7uLTFUzzKdwxfRk(+RhFf)N0;AI9nO7;<~S2t0No=+#On=lo!$z z81a=?EuN1D3SP>}lJEHL+<1z?VCY$w7W8z0#{s3h3l}mVBmj-io=rdupj4lgnYjW< z5}7P1dizdD@)sOH{l_EV{N@sWW2~h$4SgmM)NL&qf^)8c540ac#XB+d{2#3?Er4|+ z5D4JvZ_M8Z{oY;9A#R&rHQXKhvIrnCFYW9us!w&R|>xf`rVcl`5M)@5j)e?h10nudapU z2i|&g^O57KI+QvVSb;M_- zmI2_J?A>Ygu82-4Nyu$(%YyL)%)(17q3}9>kjR8blt!v>K=d&ZxtW2lHe*gV5 zaz>+5QPDN%)zW=K!@E#!9h-Q^7o4*9GCrIK_y%PyDlhLU@E$UqQ56*uf`S?$)m2q` z*UE~DKr%5Y-ZjYIU+%_Jq_e}+!opyYMfi-7>r0^8Bt)S;d@uonzZF?y{go3P$xuBA z^zee02>RMy!#*|Nx8oRSdrM?9m3-dAhc*Bo5{Of&t-VRYw%XpyuG-vV%@C(XhD`O| zX(fA{jTe&z0=@;}JDxA}#nhr0wTF8?t^NAB)cvIh1i^G(RqjA!0+brUXJCo&Z}~gIl4kYr z@EG!IB$Q+fq7Ro%bC;T$nJKu3h6PL1n5SVdqrLj+!MDH;HtFZOO~T;(DrmOoRULd| zcc+xLE`ryHd2TE){jwR#6x#Af)45yP+7A7iRmnMC7jztbNck>gRxwS1Z>y>DrYY^| zuhGJ2y-&XSe|UPn0O4BM7O3k`TJvQcbZ3B+<(5S;<=W~&Ctuln7) zxq(~T+hSq^rMf@zL5mMWW-4YY>_L>03_VQNeXn`;9000^`}$k~*dBZwy*PnYt0Z&j zU|+JGm>q+L{?AtdpU;OrovC3ZaBPxii@)3?>tbm)!-ezMr^qZVxzEe4h>7| zC4ylK8#e<36}Ft*Ca00AWl$SrW$nk|8!IzE@m;^3HB*NyzV_(LmdM@Xe=qpGf1ipx zys!Czr@usXvZ@FK45i^_z&EyAc98YJo&i@|Y!_qLZ>LY+$8?n#eJU<4?s%EZDIxT! z%kAF1cZBm9YP9?|^P&=tvOsXgym2R^5LO!WR5%Ql-Nsa*6Gc9L{v2sso>^Ar$KcLH zmf+vqWW16iY_(Pgg-hi-cZ$Ogv+Wc-spaN5cJhRn&(9a)X_=X2nU)CzT{u;x$wPf;8y60Jn<3?P9agsO7<}binBHS6l5#0h<9dSHNPS;>Zjg>IrCvwY zhi*c1gXV;4^MZO?4JRv0&U^R+GTE0d>-(HlQ|l}p^<3;JPsuYvHKp(Qzf8MTRNw}&pDY%dS}egeKhWEY%!d25NBsm?~{rUQuJ;M<2KUf zrc9(hJeDpHzWEAaQ3xEU+Sz@ULM5(>p#XvSfV%IX#CLde-)Du6v`o~^N0lp>2bH`= z;gT=hKrtw{=TTovpI6mY8NV;C#}}C1#6{?0uG4N*aN+w;S;OYLVEiV+@m9EWg0Z9J zwUa(RzQu+0;Qq7C2@&$8%ae$xDcS>F`1*RYdqeMTI{M2`!G@56+?-AiO(@ooeB*YM`}$Iw!%zD@*UPKF zU9b9qw7Ku8^H)JBS04f;H~wc?{vv z_H;6dd^+Eu>2)n;cP#;|q@rKP#`c1|AHK+0X2%lWPvCKyriWIp=SkM3uM{|_yn+lN z@Z9u2XjEk(BxPAaR?%yk5S0CVZV$_V@&pu zLx(D8VaSC&ir)c#jvxC-_a3TXCJM!8%jS3g%jSP_z3$7uWaJ)v$PGN`h!2X^j+^64 z#Wcp88y9)Z7T^?B{E|EE^UO(Z@3U3K*?4;hk%gbSZsNNelmnysByC@u^(w&s_$b#;vw ze-O^h$yq|ueF=~+E34e{At$+`FZP`~XNxsK(hrt+{jgoY&UZsz1pv zw#QZG;B}+&Dd>bkANADqjFqpHl+;Tm?sUU$C+S7C$A5ZAj=_lFTozApD6%v?quU@q&)?i=1 z_jjnIiO@`p>_-NLZAgEWuwslnyP)xvI*{vK3MD5!z>U^gJ25`=;c&edW}~q(jA62H z=sb1%X}fW1xEW4q{oMZajJLjG_>wP$8kUVn8uhksZAWyR)7Pob?{3gSa`ei*aNR6k zFU(-@*^K>a0oGQr|1VQz?}qo41+rV)9Jyl$i+*J9Ae=lS7a-K#1MC|vXP?Fu_|y=F zEV#^Z^vq7{7#H$O16jDyXnUK3ZUdXEzX|kFb$Bg?f=3r#1VUbFsBS*=oQE zEg|E~<6g?DZY6;yIZ(sB2EHVEyN9LMt$;BJ0w6sz)l4IdG6gzifdc>(QSuw}ldb_c z-c>S-KHea^xn<(@A@w9l0}4W&n3cAtf9~Iih7a`Y*_Y^#LJ$ok`x3!Yzyh!6@6_Tb zFOSd@KBcC8q|^orIy@GAbRL-+852aMOMij`1o^@Oyno&BKmUw5sK#BV+{{LA$}UUw z^v4+-adLKE21J6DPDbm1@P&LD^!Po|j?T{3hv7Sjy_@LOBMZF&3RC@f`||DhY=yMc z)QPcLImHhJhLT7orcOoT1AToH5gi~8#;V-a3j<=xmuFvgp8ed1^78bCe6P?Pk7KoRhWK5Ia;99>+b?C6shSy-Xx05sbYDl0LV6o{iWuG&U- zcfUzol2Sj%$M>zT58c^mgp$(K~v26@e~G-wJY%e}B$TMV$YY z>6of(u@*{YSN-*ZC>;c&TwF9Yyy8{dcr^q!d$mv0V>_|f&eEVH5Mc!i!i!{;d|;>( zH5Xk(qTl3)=jW>xnx?@$lmxf4q;4JyHREO7pDiAGz{&x}>On4J|FMf42wjoBcJi z>)iwX6PxIxN=l7C?PstoNJy|bp1&ab4ryhT1styfNx5zRy6nCif^jF96|~?}rOt(1 zgzRE-WyNQrxiQ|GP)#0oPM%UzQSsru{^K7#4S97_>qLQ#M}Q3ko{uNe8-M)izN-Sf z*^f1Iv=^TL>)ZSG*~Y1$P={E4jJo%J1NrE;0@R(*z(78pR6f`6;vQ8=Lb2#a&L968 zMn}^|_`wNDEiDC2=B`b~Qt9r!U+eK3bbBH2uU7D}R1<-VsShq5{UM0jyVTZU|5U!< z2Y87eM3nZv|8za17WJV1A^5;6$e;K~jBp#Y%1GKwFaB2(R#{W5yp}=%3Uw(pI1ttU z|Ml+oG}SeGE_NiNECc_(R0IC|oP#$sSUHk710k~8i-Wo3jXx;aICfk zw8r)Zn`rCkl#kjI&jGr?`?#X*%aP*Y1AV1vDJ{rmMzq*ylA8Yy+) zo4~>Bz*IieC7#oJw^i^$>8B^Vj*gD35iKYbz)mF{2mbk+efv7l@SPUaCGpk2@9sD0 z8@bny)cD-exA=J<+cp22@^#J4SuBk?d3pAv>wjWc6x6Sk2D>%N>mMpx?3hG+EmHK#J2asJR<0@r{;3K=cMbVG5P{;-%Zh`ufK&$HX{Pgzuk?)`Q*bl+pXpzqbkAVvYl!57a-r z2J~+jxqmIAePcUj*Z36utuMeQ_sHT$)F3X6=>_T4uw{HLU0x}1$2c|-MNANH3 z$idN=$4x4vK$W8R6VAzvW`FMg; z`M|2YuC6`&$6wiJVEbyn_l8F9!n-cVzi;J1^Y?uM-mz>eRx_mjv6iNm)`_sjaLBjH z3Ja@@Dr;fj@Oa5f5-8=EUzo*XbU7upH=7%s(H<>~8bDIP`$X?1H$w0M70C4Z$PAT3 zzgW79oqhmfE=;p3rhdGHXFPDNx~5~ zUS{(gnYm%(ak_MB*T)2f9jdaY{k zTFJs?3<|_(&?T-ib+hXKej6T>YkaKN6AgkwKM<~;OOsQvRk6hk#14SCf5VU`HYvY) z6NKPZ2XR&4TJ`GH`WZEt2gywTdwY?odlq@V}*_oupXuI=zt-HN6s2`X3 z9_5mXjV(JXdO=c@99R@mgh?@0u^pY8v-Ge1HWteoa{l^tE2ZwRot?ALMn@Q=fLsm} z`>9zXv8yhpcXZ^{Q%(c1-EVk1=W9S~IOky~oqw(_#Ax#X!SIre~~ zoKk6gpsfk7fYXxFC0%?)k#9{d%UJ$wr{0I`v zs~a1qkpy7?jev0nnBTqo_fG+s_fgry1)B#*?`UaerX>j_490GN>-_Z7PwHLjaxd%9 z6pp4wL+Ssi2-poY#(E6}gL*y{zCX1a4 z1)ho}j!?w7oWFyh-G~>NA-E4ca&QTaImExhxyMULd2oP}94G2Dcsq z*Y(~6)hdpXS}&JG9gq~W}pSd}tL@qmz-@<*|2F31N1)ylB2M0HB9e^Jh_`t8&yug4?BL6IQURlTwk0tpoll70Q5S3@hJdabvI z4iqOW9)#>^;|$z=+(_d)3pt`A-RXa5DQM*m+NNAs=3n(Z_U};IGWG;>{Ur$YgZDPW zLthS>5IlfOxO0}G=N;2@RS&ph^jr9p^m-^o!1Ukxyh#WN4q>Ae>`nFH)G5dNJ41at1EViu&Y3?{tK76*M7g#pxf}`Wqu7U5|k(=CJwqDT^xF-t({FG zl#bjTK`Yr{78Wk&S8QLB?wpy4d|PHhi1+Z_0Zs_8Il^%UXkYIy@qIQ-7Slpv7i4K0 zMSgt%O)wl;;y!sYw$OdF`@AwR;&e`!b$zLK^gsB*@K`!Yx6(Y% zH5wYSeWYeJ?54PpTk|8-bm29Z`x;~z;2R|Yu(SlcuVCL6c>Cp3Y3b2FYAb6C5ctO^xa;Fj+t>7Sz-H?-*f2|Ta3+>WXsNn zbDz$*k2=S&20Z_dlA^2UM8O3h!f0w4R(Ui__Ym_^g8HnJ*2k5AKHQaeO4w^EtvS+` zDkPes5W+f-9ie~rg*W`BNW@}NDk~dzMrW~|K#p6^;P&gE0Ak#zCzf;YJhaa(;<9Ha zft;gv{}K}Zq54u~+=jJ-zc>lHYrf*oVnPOx6lD|;XhZN)ufXlBDNDIRN%N=i!1LBYY$;v}`6 zWl>xN@ne_a2eb#Rf&_~}Ps*z;6FK6S;1)uZu26Cb@>mZo?Fb;ho}_sGZxnX%pjH-y z5*sfD0$CLF-`_iQ=nyp1qc=^=%ow_RN}*}pSO1N6(cIJ&tgUoIF^^jYLt|oly9Fyj z&rSu-tUSZlCC5y?wr^JZf({adHG!Z#0F|@BnX%bf+3A-TA*MFusf7OUrrV8dtr}X> z3Hg}5=+`GAcK06~^1{m&Kj6;LrM!)aS-v%x6)O91>?xFG2WFgUb-x1T91ioo2CN;f zN+Bgc-+>x1l82g@pT7>00LwM&HK>-Fx0)chKGq>nB{HPRchY4Y!93u8ZpVSxBwV=@9VLgL9eR|3Ef~xw74_%rX8h|wGYihxw)WYC!9;LWyWY*!n2X;vrej#Zf?}6UFxfB zEcRaR6}gf}H-!F9zuk!A?h!`S-g5;FrUD8|O4FvZa}-NXC{3W>rKVbwiBl39nwpwv z;Treu&CSj(E-jt-cJ;>P{-K@O87ucucignehtv;Xu%5;uFS5wa9?Bb1|0X2`Id#iV z{gFDPh&zMm?Q^}ont+D(#g&2~j>P(Da1BS8VFFLEu*^X(LWb4NQu{8~t3Jv0A*dnmfeAw0M5yG!{ZK=b+JVRMiY7Th)uJy2gns(z;~j=L_Lt>kAK9Zu z0dYUwJh=RHnYy)-Q`tE}&2c8W`sG>>Uf+5ytWPfqesqEXb~l?2GMfTyqIUf*1VM~gCzZZ) z187b_e%3Vc@n35;6(|>ry3>~&dFO(&^zXpf2a)$qDV?`bjc0*;RJ-(hiT@o$PAlrn>)f#;1QF&#EWYV6@WHc{UfRT3)8JoD5D1uO>Mh%I4#3 zkbP;lBN0iR{rYxEc%P0XU9bhob6f;VwOQV&Ld)R_(vog==Wm#eLgSpXdz9npi98V5 z@T*6#U3nmu=Q0F_ZU7(8A_Zh?gy@k6N{4(F^Ydyh#i``kWg~ZJDIZOgCr$NAtbt7_ zSGqjn3&s%krNeHKysFzIS4=LNryz{gKd5e&AT=4WVBDUFbGAXmi8>@Fzxe0&_Zc6b zmw$Vt>yq67DkPN;n`Q4i(gty;g$i9PjK2JCKa=!EW8dNm%r{MwQhA=PRI_!3!)yV+ zrK_bFQCZh#+Osn==X$eD1maK;;NOd<5`A}8CYLMLi7`e#;?J*HY$kdWxf}=QWog}% zVoRJ3rl(VE-c) zD)Phbp|O${_P;zD4CsNO8A!joh$aYH_hx!z%lLXH(Th@q?G0X67Msp@58l>BI-p0L z306V!kF#^*fov%C{2KTt4=PU-VQsDecK7$|VaVH@LpUwMub=EiW-C?$$Xs4gr{H4Sg12mo8?-EW3XjySchm_iLnL_$dwALZMk}@)jAn zw(Bi8^04urGvq11iohY<>(JKaRAG9kb?C`_?<$jwqvak;vDeGXpih@ybhN}4w>C&! zDxdu}BvU%%ve?L-PYjQ3)|B4NZ&ZqU6*gOHGiq-~=I66?8S$K*YFMsWB(e*d`^@`n zQZ{AEY4nv!S()vovy+XX9Fpcs{!CIE-~5qT>(WO~iamsfQ$L9{Tu->Dkv^4o)u?K2 z6K{{)jH8b@fmADIWdb%K^%K4;wNsVEs@WI7NSq{h=n`_G zN;*gvpKdf!3~x6@ISB#}GEQ{Vqtd8m^o*QaYv`yWl@pW~!y99+8ah$!+~H)JqLIz3 zYC(SX|6cmBE+6DCMZQYq>%|2U7R8ev3?~xT#TS!Di>-P%y-$=--cdkB!b()p;51vxBjEwuJiUyx4?rTq~wM^)zs z3eG%_x~wC!*4cP0sL_c$oHy*Y>NwJOxEUg+t2I*-*?DEC)Ks3}FVmQ+RJq1YNkXr4 zeQ;svsMlqqlM3T=CSk!$Bv7$9gQVkSSrK|C{@7}jL;9}P$AC#@rOy|!PgVbL0Vr!- z9~6NUS7!y!=9A|->*7{Ta0o+3tjyWxE4$vyhK`i{gGc6!)zxLJx~G^jRC8DT`d3H( zAcdf7`u%8B#w%RcU_^fV0<#TKzSYeN?kP6?8MQxI$Qzq6C5QAO|PW`if|KgBE>6uC{$KD9g?S|zrNy5s; zi6XeHhRRky#u(mzFkm_im6!o8@1yv$Velh|I%%?Bxz8WB5}k>-N=96+TQdA;^0nMi zm~`Oew)!mOYEx+Ejz|AG-Fr6|G{f$mEWvVp-5eAQ)5z-m^}-QwZFQ7Fb}Wh0eTf){ zYKk`0-lX0Gqb?)StGgn_eZa^YZQsKimZ2KAHg`5$hBVcqk)aZlYPr(kZ_{avms#YJ zT}?XG#@l>}vi5uDCL*EuklRemR_QDobHSKxL`o4LT5$X~O)w{z{sw}itF zA3D|OC{SKw19nqLLViAB=%X`f6=sTo-?Z8OgGT~q)4JzR*^o!+-Wkc8Jz+@_y(j6r ze~!{=B+MRj#a=2-WqQKJI@C8znpoyWz}K%PI8?1d`yUL-DbcH9>p6mXHJb}`YVDse zI(D#6$VzRE9Y*?fHD@Fy-pT0ST$1+MC|g5a4q;%yo?PxNcdinN+wmcMp7;qv{krTv zY==EXby?~iUpdQ!8T+zcI%u8kikXEDo*l>=-ABxxkXCu`9#Ru0y_GvEE+#4qXO&-r z^>XfJa+c;o5oLa15;VNameyLyvJWu}>-xpEp5qE^(DyD>s%A|>y{&EE8t%;DL52Np)5@ zB|h1A2FJkV!57BuGgtH5Lgod1P%r-SBBZ57TgawFtI`dhet*&HIbX|Fy7Xa&OVl%xt>KGX;2~rFM9?1iKR4iPDE51??j3 zfBXWcOirV848quG+55jp?;;{eMgC0Ox0ks!An`{0G@x z7Ae3R?R-5PkmGqCxP`VmhjI3mgkwRbNv#RO&)>JlqJ zrF?r`*c15|R-jdNQ}g>rQ_a=%3$9s}Y?^g4QG9<)O$k9R z^J>zre_CuFiDA5n5jC_l)ae7#<}Hh$uw7lhp2lj@E-MJ1nPI%iMda0k@mxrkR$B+FM3DcbZAyDKx&tr~QI@VXk#ZH1m%aC1?^-xK>_*JiNj(|k#FAL;Vx&`;I)4(0y68Qfu5bgww)vqf~k5^eL z=I1$d6>R0XCHF(GmwYahn17YIafaXS4%XmV%(H9O>@2&3PFI}iD(L^L`v>9DI|ne& z{#8yF{CRC*E?vz`cl~*7MRI{#)&BEiiTMj$`y&5+n?CxJ?}Re<;mf})B`bK3>8E>* zZ@;Ad(Da9ma5576EW4-WJ4JpQ(-i`v+|6XrT zMshLdy!npNWOF55vq-=6>xJy1+bz<6nK_jb?W?bU8T`-^Y`*3X2@JN^GLL9qluP(| zIxM31YV*PTR$Kt&epB=Nde~Tr)E483jQ7b}ZWI*M?=+EcTuk?3juAqWYoX+~fc6E% z+moEgvRgiLi1!ilHsrFI1mV*s(+`ky?9|c)S}mlWpn1MM939wRjZ49oq6rcM4=AB( zqS1Af#aGWukF|FmaKAt17nk(sf=Qh|K}6oZ#>iSM-a6UOq5TE)h=5eJjQAuu4`C6G zp&~OJ!Osz=BUm0D0Cnbem=e0)|497dEaLR>q|!jHsWAu0k59J=4uqhy6~Irh$NaiYji+vre$ z4vl9v7?ra++2IOaYv-=mrE~74r@hrb4XpvV;_V%8t)YE$Y6Q|F5MQ4+TA<_-5- zDXo){fkfQot3BcNgU%z~=qF8|W@G0937y?@Vi1LQ(W)_!SB==5h%*IM+5Y(7C zq~!k$V=-Z*LxRMr=65z(Db8QCgB;V19QVPaDADSkP8@kZ)OVUwGil|s5^Z@}`wHiF zZ?6<)u?tHZTX$~>0Xz;&Xth!F0KG9!l-Ss{~W^F&Ae478Gicpl+yY;LHdy#ed*peyC&Gn`%^B2;nVO;)*E2H`f_uoSA zyp@+@-lxy7v*;UC*o=IQHFAW!W)+3);k+U<*U!9M{`8B8=~q#KMO!|b9Xpy}QnaW| zF6jG?psjlhf>MgY&a^MqtR~Yh(ylXnZen$;UM(D1N!&F;Z&k1IWn6la`zEpU{y5AT zIxVjdu|bx7`W31cCz~|>eR5P&K~dlQgz|KM9{zMza+SB{Ocl9?oy*@<&bNh2NntBd zd?F&_nkrs8g(%@ZKb!Kd8lN1WSNs>({2P2XfwKz9rj+RVHuZQ;zBz z1Tx;-@%A}znf3{c4OKnM@#=hz-xay+%3P%mTPp9#EvcKsY@wE-mxf#QV{z0kzGww< zgEz)}{zZ?>^k9)=*mWwoh$H^2`GhpOT;G8L3MYt(;H(FZZml`|?gW%?*t?utN|au9 z54>V*OiVM))bpL_gLZ|v`QE&^MPFI0-TG_D;#^VELau$hQfl2{^D*5EFOo!mKu~d> zUkRM+f`JO~|I}Zuy{kX9D8w%B04jGotz3r$ouL-`L;WFFJm%l1 z5SPL8g)S$g0KC~>T*f61dG-!^=L@b z-k8)bNQvc@+w{CrOQ^8_3Xq>Z{v{$r-_%dizq`tbz5gFa)bapWLGbBp&AjK|AZd%z zDblLIDXG=1Cch8dhWJYg)#(gf*POc3FLz9|)RQ&`9{odAVE{Xn>tq9c=dDw`OpT3M zm0xf+tl5Zf6Q?H^7pqY%~P;NgtMY^JoQ&@hxiGsGl}9;;u26Kg#4w+Xs%{+g;b(`;Iv z3Dq<0%anqM87C~DSuj3O6#^ZuZu{01XBTUXNLAAY>eWD&D=8}PP!r9*T(>k#eIr+> z2%}p{oE=;3PN7Vva&DU$M;Peo`C)kDiXfot3~&mVg7M;TTlZheq@G>U^E)LTydXSrG5%!>*JyIk#1sfe)M5t`0}XmQOKXV1aM z(l4(9P`MeFrZVAZ0oTf+uC@QM|5(0#S5<@9_RV!_XXWI(l9H7<+QWNH1=@ntBG7Zy zHQ-o#Pm?Frm4?f%XIC9r1NxPU-Bc=q+QGPH^+Db2mkhyf!YAZ2U15l;eWoTM>pG~85rdc*7!;$7Iwj&<953~A7v{?uZ9=|YA5ZQW7aQ1z|dNrgH3tab1nz^3Y@^2V!k6mp@A~a^^#n;%v`r7i#8h zLJ4;MjP%&C<~URLWxp+7>2M{=!(lJHsSF$sMRkNmoB3d6HgAJs==}KS_b|Dk_LJ(eu=qIhG4VGtwu+l>i>nNHE0@KRF~TuycA1 z!JS>RLb%hDLBxb10W+*XC##&zhzVN`)bjlj8eqIt4eV~@vCy_(Tz}Xzmv_jTavpE{pGUU;mg?W zzi0o5^Qn1dDupeas$fNHxd9|S@CV+^_}p4Ek5f<^`}c?M*Y@W;W=bhlJ|#; zn3l-N!IhDrJ~_9=q4dj7XHS{b6gq^;-E+yt?K(^-#U5?3H--|HcK0EfawVyO3_jWm z37Z}`=Yh(I72bRtIRF&Hz;UcqLcwI}T}x`^{sIs2Oe7Qie@$f$G@o}m>$MVHB$35v z<)wqm49X^m9T^4cv4qZ7!JLUsWULeEgPeU1Z^cJzs$o>H+->Er*VjucO{_Co zEyPIZyJKe87OYRyt)>QXphW$<(>L*G%4jLhyN#VS3cA7m-|Ow5vE1{pBbYz6tp;DE zIt2|ZSfANgxuWfHe+;E|anf7;^Z?+@AaAV7*7aifqm_<@tW(3Qqk$=rTQU};v6s>~ zzHoedyu5ec3x%o6_3-qw!{u#q{7eI~<8UHsMD3<3zKuPVboCOKM6@2Vc3$HCy%1p! ztj&${e5HSQf@ICa9fB{)ZG6+Z{QgI751ZC6In5j{5U@PIe>_ZGDax>IdBA5cDRkpj zm#O^J_t^PShpyN)RqQ1|dGaefmQB5klY7CfmDyP9)v`4vuk|uJ-7qllc=GnosSase z$dh{!=X0T+g~436Ki93OfI2_L%mE0m&9X6ruw(KLuwU?mOYaX&rg{)eiOxl{ z>E2XsvG{f{l@nE}9e1!8UtU$^=RpjV@c&?kE* z`5{?A7cGHUpS1>R-}YG?SGw?m|kLl+pjUdKuCPjw=fY35lLz*Ed7# zc=kGw1~joT<}sedR;3(dKYOGr)?Au7RS$ed{NcF zf$QVU*QU=oJtUcs+~)=)rBS4DoG^z(ank~MeNGy4Kl;i3@`sr#RD)G{4K20|5NL*Bs5^ zvbMyzy+nV;s66o;H3Lm05|;hX2OTI_KEUzt?Y2{A9Camk&sgGQ^}>IaaKeeCw1c)J*TIP|5AHz7o3$I zIA0Q=E=Tz_z30tn;rxj{t--8byC~u#%C$s9pP_DiYnvm=;Yn=ygMOc*yiACDqa%ac zQ{<4=712cOt5l3=xD1We*F6vSJ19{N?r@H?srisxRq#P-wHTcj|mD{V{_dA`Dfw z4lX#1F2TqpTe<^4VDQ-a`l5+r4H1TTe2i)golD?MGWZ$W93Whvi>Ht#GUy6#TCP{ID z3+4FoK@;72e`!)Z;eS}k$yJarxd_o6oO=|)s+ObA-2H9a9wY21`y;db3Bu8S1=N;=ihu_7XF;bvZ(l6GyTp}VGCjz6*ZUa;g z`3b(w>>kvuW!jfNjmqx(&D!v@upG)SC7;Cu2|Npyyr6RQIqM9>*OqZ6CAYdbSfhG| z!P0qrdbBVM`AV9{-~dm#wuzRufsTQ7n&3C1 zc!7hrQ(PV_!v6{CwCGjM#w{j7f9>_IqQ8T9 zugA70i8}&6IFMa18k!F<1w=>8Q_QSnCL#U8L~%stik8yCXf>#E*ijqzqmBTENt@1y z4`XF#<*&TK5iG#;!rw1`@`dYF{`AzJxR;q+M$57vnxh%qk~@(u@cdVH z(IVqg%UAjDRg8}UdD%;XKb1lEga5rAN%BSo`wRX+>YePt>NJ^u{`LVnI>}e!SPQ;{ zU$32{!B^`26F0-oo5A=ig9DrgcRc22@<%R8?GpA^l1N(+?*2QALw7(!?nJ;P!Cz=8 zf#)X7zy1WDveb#lUj{aiG2Q(@Fl6|KM$(~Q-Hut%kR@x9B9GKbMu|k56^CU zl}`)<6wuG)m;jIRgC}v8rC5z;f4x1{`4i=rmoC6+zvT28L@X1ySs$HAP)hzbl*K31 zGNW`^$6Lg7bn^3Q#&i{~Li&1N<#%o59beuI0cK07swhjosMDhQ)_aS814mm=cjkws z8)m_MSXpeDR}b)0eZ9im|8kpodb+S_@ZY0?J9~IkqVtD8smA7=F+(XUU4JC1V~TRd zmT3J*fSUKj-(a>x+r?PIsWk;RBLzWW>fgZq&Ycr~)L|l(P>`RWn{5z}0Wy2{oGpIW zqunBLElbMksXAZj-OJbzW@60usk^ZK`d07`Y5CI{wz$f3lk=I05Jd%idA zS5DDRDxUD2xuZLoXu;>t$o3;U8R#mtkL%;Fl&Gs<0t5DErjF+*)-~G6`1@wxVf_vV zr2fbs9>54dq3I7qpusJ%s1A#x+CS5pJs5%C|J$_Wf71*6-pv`EtG{fw69INte<3>A zORxeuQ$O#@_^Yb_|NZO6m>=;%#mwaoJbSi4jLpl=S5d>1Z(n^ocv~(cHxg?B!!g8DqJ4KJcP&IWhiDdw;fuBI zZPS09Ak}Kun=KfBucKtSm~L&nk8H=pWBg`n)7e}ONS05)RG|} zoPWPe_o8!xYThib(6o`c)hW`ND@OK(*r*6#BA-EUuuV=P)6A`7|{Cg-cJTM8?(`E2ZM4q}81vOvab z*Hi=GKk&cs)($p!KHgJT#(dhs5_tIUT(5N1rRp0rwd%dT8T@H<*HCYeuV$5Uv5FCE zZPYN?he@N*cScx5gu}04*~#3}ZTTvY4QCZT91xyNj)PJ@#9!?0;LG-#{-^lhRD9n` ztHw?96Go=-f>*8f-y%|^clDg^zv$8CJ{piq9$RY{?`&-ZD9~?XX%hWV%|Ua~ZW(^4 z_B7croZX1r7p2v>oEAi_g1Ufm{HXJ40kD1yTs%jDT{_R#rlzJg`ERb`@hg<3Zb!(F zzxo@5r;`M-WKj-V1(~86VPP5-67lmxWl% zh1&U!e#}JeA|}r~X4IoQF9my#F2n70HnI+fiHVfA6H66VLrdrCJ4+zNqzJvP%H{}d z8OomuD{WeAyL4?!la?RtStme0!7$l-&9Pslu#oXR@rgKyGpMn!VMudCqY|=PoFQ4r zi5;(JWZ#eS-8!k?4BVwF;o?Z@UyKv4&b98J(C{A?g`s_^jJ!RC9 zW%p-roK!+lVeMR>c+ut2Zl zUb0scsFOMk#9JrEuyQI=HelDD92tna_$0(-8Q|$$GpM}Pzi@(8$-xI$H{x?>3iqM; zaS)?B)-8_QVSkSavUT82t{7VF$>p%_eCe?%iS%BX8O-#NDXmK{ai#QK;Xr&I#)W~N z{bpv>uJS{1{5AfP;Ail<@GNZ8WAOW-7^~F>sq5Lq>iZwlrA?78Umc9N}le7n3O zTHJf>1pu~|V)39Bh#8dX|3x*kKcS1 zrU<3@fE)@{8TitymM2OhznzCQtAzEr z`Zd-5!h-fQ#;cQWVUc)RfmxfF_=h#c!VUnKF^5`vd}k7i^6~Qz*1+hG@0wDb@a>e_3UwrGEzF8T4+2i# zFJ?%u>CY$S6-e{Q{f=9`ym6+Zv{LR)fOQ={KMv@}D{Q7@DFbXr>|i$h+RAGi$BLqD zx8SzP9!?$ig+;XN`fK_FSWLP>3wBsbdkpy2$&qqGx8LBHd-e3=r!Gce>_#V*ry-z( z5V;p{-;?_xGk@u6irEqL>`->(M=t*$4oVwDux^807**6(sq;S8W|JfehPox4nQ}0a-nT&jH%abUtGOa`4CI736DMY?5t@Ko?uL zUr5;Hn23Sr$3K)(BZeACk`X+$vlTu+| z129SarV81M{9(3?hc-XHgDzy@>C@0RxYK@X;~s4%=iEsFQU$JXZtAl+LRib6?AmZp ze({E(;U-w&h$;l}srM`qD4lm)HS%=w8U2Id)+q1Ub>k~9bZ_=rD4avyaH zawODhF_^FEaUCj#ps(AjQSEt1!>w5yHp5@zIYh-o&>uLd1L@=db{y2`uUE*o`8~*3GOzisrce8u|D7Ll2=gC+7T~fes`4O zOsU#i{cf8|F0iLP6+u0m?sojJ+*v#C(>SHyxNsISI#Mte0ERPgUHa&^g)9PC#_Mt; zQJTW#F|dA-o_gmUNPzoMf+7EO?2t!#u!y6d@xgeb0b+vDVY`d z745h_SNa~C#fjQ>i=9K>`euyph{uE;nNcqZ7cY|5DR;)yXi+;gj>8$**tiFLho;xD zdHVfsdY%q>+8Iy-jKQwkfz{GVOr@$+1|SREm5-5K%(hJ?CSb_>cHv`C>`&(D_kltGhD5WJLeDdw)P!$L=(omNGYANqH-nB)cyWon2_*2FiN92 z))6w>pPpc!jQ4KdXc?ekwwJc0b`N(a%=OAi@{}3x|!a*;JmU5meNZ_D6aZK_Yy|`zK z#K0BGEE7L=RHbaWdHrP;h0HCUiRc49)En8 zD->D(&wn(GuJvRx^(`JNJ9GU{by18gVS70~0v1ZhI5rN|O z`C)y7Rz*$q*l(@Y$=K*WPe?mVYZ`UhP8ZS}<`)@;uAL|L_0FWGnVT}Pqr%75W_q{U zLphPfNRKU{qP5L3NV2#gP`5GhbZ*db1EaOQ`qXR#FN&NIY6P7F`3S;OqMo6l>~dZ3 zjAzGe`5-!LCIPphXM25aydI%t_a3@NlHz4)l-1sMP!<0)3TjtDm2EEBbP(TFXfo!A zT58xolj^Ye?q;UZNJStcs98RD=T9**(>EGnuk>~AE#>kD8Tx_Pjv4j$l)$4~+==n~ z0u~$Uncuf<&t_=AieI_Tf_FfDu4&wl_h%eXTyEc{?jf`67O&MMTkOX?FL~U|AJ_Jp z$d`~X$a%ZHWJpNCzjy_;^>m@(sqLX!YnN4W2Kp=`C}x-)FuUH|<%sZ`Ez3cBPGHuY zpbLxK3lni6cFIbCSv~a8MaaqZ44E;c6)yg(50wb&Denu<>Ib{7g8#?vKj1kE0Z4QR9*5sw$!Tq#q;nK zFRR`deUoa->qbsNr*t)^LXTXg76=)d_`1s($e^tnHqOztz@wpOByu)BV85l;WT3={fT!2YnF&<*~ zhK{$g{@uepCVVc#YdQEt7tOtnoi>6;c}>*NVi6gtdYMn2)Bl-s_*6|s6Jm=xk`TPM z|J$@b8mzWsvR-jQ`O6p95w@p<78fO5`bX1KySh~AozIV(2NgM# z?~nB8$)?LYN#6Uqb~xr#j}z17RTc@#d=`xz{#Ig%Ls4fSJz49d@A~v_rl0%#-pmJ;l^V=e>_X~!Fwt%A&9g(#zlTBd>M$(R>#ZZam z7v;Csa~-|ej7Cp()-DQYT<&F5X0T3j({nObD%y@1ckj?P^u`?9r^a{dv9}$J$yQ&M@GMrSF3VVCuq=OB zU?Dl8tXOAu*4d_|q}**4gqdpj@dHGkEGhjF_7c018rlVjk?X4WDEW@{jv-AXU96B3 zu@R(sEVY$ZFSbNIBsKi4`PIbMOlP9I@eD#L8{z9+I8V&xsCPu=KhmC$Blh`eTTd1r?9a*Rv@yP=yqj1 zLj0;>;{5q_qcIpSX5{K2k|Qkz=d+BWr)|8HjyP$!>FP4K#|$aqe|9E4I3|Xt70g$EDb_2jLsuJ4qSJwfxb1Ltf6C+nXCb3e*Bsr{`W7dn+xdi4zj%$)15I(>s{%AM$XO^-x=(TWm)mk6 z2Wx3%H8nN(tUUc9Xh}5^I@6n_nQ%Mb0>IW|!iltA8rhKHGc*fTJCd2^r0OX%gCL5^^V$4ZLvgwm&tRey%ol*bG6$7FAhqhSa)L4`=WTAF8#-Xe7$K z@mBZP5G_bJt_)4Fox41mplH>PQtf*T!d3f6SD;Mbsc3R^_+Wu;C;pJT9dbG?2)R9! z`@T>xc4V~bb3B;zZMMGQn$6WV0`>DDzqQq7JzrAoA!hvQrjN_&JLNQdtON|Efp=q% zYq51#vXSGa1!zq#XH--akVeZXBRHR>-b&>9Vr?wRxWD_XD7&3KLWI4qeWtTCJmst+ z^`hO#x{q9`=W_ay3K@KvUh-*+@T|fwh$6HV7E#C{nJebYCYig^(^$?)8!9>1Z%uLu zQcsMw_TMd%`s5~JB)}8!NKFcgsy&G+x$e!aqULb5dKg8rlP+SElHDI>*dzZ#pWGKS$Ww z;>#*4ix4%k_U%c28IVZz4>BW}PYbo7!im~+@fc@T9@?H;AdsU-?QqgSf-H1SyV>L5q zHfDK!*3`Ek0~)&|mR?DE>(pHP4FIK+S@@v+Z+I5n=(#mvtN3Hr>>fN&D6EM|(`s0O zW}fQ(>zc%=S?3^>xV2`{*H3Oi2>kDqab108TMGw!#NwRUR+9&9GEKs~8tm_T5zu|$ zJ>T}ALSdxDyZ~NQ8LdW>SNqT5A-_y)atDXEv@I``bPow|TD7hv<$+h<_x-%`- z)M*nzvol36S}SUK+AmaW~)5Z`!Zq1B|$T&lM+{1c}sm7a6ErGv%P^&(EFe~{V>^&YV}WLsM8 z8H0yQBU9mtxyE%C+G?}GD>cul2M)&g$E76+i^hpyj^9KLP^8z91(DMlx;B`-ygT|1v1tM)ZN^#=X z*m!lPl4?l@<#V!hVmy*t{deiwvrwMc9mB(G%aYtW^+3PC59Bk%It-{EA~MatTRI*3==roax?mg)be^LOTWN=wN`Kebte9&uMSc1lPrEBiEbO!&Xo+3ECz zaW9t^k1=mTmR8fE?=X_o>{QM|FVoky73Ag`t7t8Icc;H^>6a0XDED1P@vOmwvT=*` zHDgQ(G>miVpKT^%H)?GRCv*EF)C~T!M@M%6z85^FaZvBOuKe*!*lfnj0n@LNKlb$v z_4QRbTYB^^JxrDL9F|k??=H(fXaD!X8%K04li~%Ua~(HYN+{FjM`FL->%%6DDwoKm z<J{Udb_#=ajyIWs#KUU^i}1rk$|qE+u4LW_RR@SnS(5BPmVQIJdBaCR;1ZDCIgdqZ{*t z&ym+jA2I|i(s@`}S|?s9h(udcQg&5F{Q-(GYx%u#_>s7ZmulcH^*CK5!xYJ=_5&%s zcBI)U-Q+vncYzbjgNqTp^u+fEQap_}AviKMdUwsxU2w!c!|-vPn794EF)Zn}M$pmy z=Wn%37j<^t`Rk06wZ4>E*{&l>M>owIo>9nnXni-Ul#VX&g-rO}6F)HPiY1%Rm>z#$ z40Lq$AJU%vwZ6M);X8>k*ZO{-9;bygC+;KD&JGQJn@u{pwV*WHly9-G5O^Op!7A8XLq{(H%0&M*Y5tI;xjc)MvzJQBJU3q zVp@`967Sms;$iSGMqWu;#bNoM&x1~gP PE~a)_^HQPmoyY$Vlj$iT literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png b/docs/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png new file mode 100644 index 0000000000000000000000000000000000000000..04dee5a5c19e511feaf9e8fd3b9b162d04c26816 GIT binary patch literal 434317 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

    ZwvWopFw|@Lv@|rf>+vlrk>_Y6 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%0D7T6iwpz>>qNDC(<3{Cfk3_lYUH~IxiYi{<) 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%0DvWc)s%gs2&Li9H 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

      qO_!kPj_M|I{5H&YWdLDf`2)-zM$HF4^ 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 + + + Group access tokens provide access to all projects within a GitLab group, offering group-level control. + + + + Go to your GitLab group and navigate to Settings > Access Tokens. Click **Add new token** to create a new group access token. + ![GitLab Group Access Tokens](/images/app-connections/gitlab/gitlab-group-access-token-list.png) + + + Fill in the token details: + - **Token name**: A descriptive name for the token + - **Expiration date**: Set an appropriate expiration date + - **Select role and scopes**: Depending on your use case, add the required role and one or more of the following scopes: + + + + For Secret Syncs, your token will require the `api` scope and at least a **Maintainer** role or higher. + ![GitLab Create Group Token](/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png) + + Click **Create group access token** to create the token. + + + For Secret Scanning, your token will require the `api` scope and at least a **Maintainer** role or higher. + ![GitLab Create Group Token](/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png) + + Click **Create group access token** to create the token. + + + + + Group Access Token connections require manual token rotation when your GitLab access token expires or is regenerated. Monitor your connection status and update the token as needed. + + + + Copy the generated token immediately as it won't be shown again. + ![GitLab Group Token Created](/images/app-connections/gitlab/gitlab-group-access-token-created.png) + + Keep your access token secure and do not share it. Anyone with access to this token can access all projects within your GitLab group. + + + + ## Setup GitLab Access Token Connection in Infisical diff --git a/frontend/src/hooks/api/appConnections/gitlab/types.ts b/frontend/src/hooks/api/appConnections/gitlab/types.ts index 0d8d9baf0..7d2699c75 100644 --- a/frontend/src/hooks/api/appConnections/gitlab/types.ts +++ b/frontend/src/hooks/api/appConnections/gitlab/types.ts @@ -10,5 +10,6 @@ export type TGitLabGroup = { export enum GitLabAccessTokenType { Personal = "personal", - Project = "project" + Project = "project", + Group = "group" } From d310fef792a65eca995da9958bc5097f7396d7e5 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 06:06:45 +0800 Subject: [PATCH 23/38] misc: improved commnts --- backend/src/auto-start-migrations.ts | 3 ++- backend/src/main.ts | 3 --- backend/src/server/app.ts | 5 ----- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/backend/src/auto-start-migrations.ts b/backend/src/auto-start-migrations.ts index 38c30366d..28f66e20e 100644 --- a/backend/src/auto-start-migrations.ts +++ b/backend/src/auto-start-migrations.ts @@ -87,7 +87,8 @@ export const runMigrations = async ({ applicationDb, auditLogDb, logger, onMigra await applicationDb.transaction(async (tx) => { await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.BootUpMigration]); - // Signal that this container is running migrations + // Signal that this container is running migrations so that it can be marked as healthy/alive + // This is to prevent the container from being killed by the orchestrator if (onMigrationLockAcquired) { onMigrationLockAcquired(); } diff --git a/backend/src/main.ts b/backend/src/main.ts index d680fc006..9d7812c96 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -86,7 +86,6 @@ const run = async () => { envConfig }); - // Setup signal handlers // eslint-disable-next-line process.on("SIGINT", async () => { await server.close(); @@ -117,7 +116,6 @@ const run = async () => { }); } - // Start listening BEFORE migrations await server.listen({ port: envConfig.PORT, host: envConfig.HOST @@ -144,7 +142,6 @@ const run = async () => { logger.info("Migrations complete. Marking server as READY..."); - // Now mark server as ready - it can accept traffic markServerReady(); logger.info("Server is ready to accept traffic"); diff --git a/backend/src/server/app.ts b/backend/src/server/app.ts index 2de20ab46..daf49ed10 100644 --- a/backend/src/server/app.ts +++ b/backend/src/server/app.ts @@ -38,11 +38,9 @@ import { registerServeUI } from "./plugins/serve-ui"; import { fastifySwagger } from "./plugins/swagger"; import { registerRoutes } from "./routes"; -// Monitor event loop for readiness checks const histogram = monitorEventLoopDelay({ resolution: 20 }); histogram.enable(); -// Server state tracking const serverState = { isReady: false, isRunningMigrations: false, @@ -171,7 +169,6 @@ export const main = async ({ }); // Global preHandler to block requests during migrations - // Excludes /api/health and /api/ready endpoints server.addHook("preHandler", async (request, reply) => { if (request.url === "/api/health" || request.url === "/api/ready") { return; @@ -188,7 +185,6 @@ export const main = async ({ server.get("/api/ready", async (request, reply) => { const cfg = getConfig(); - // Calculate event loop statistics const meanLagMs = histogram.mean / 1e6; const maxLagMs = histogram.max / 1e6; const p99LagMs = histogram.percentile(99) / 1e6; @@ -252,7 +248,6 @@ export const main = async ({ } }; -// Functions to manage server state export const markServerReady = () => { serverState.isReady = true; serverState.isRunningMigrations = false; From d860c5380b16df862020ab73d16d6189f51e3ace Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Mon, 27 Oct 2025 21:13:16 -0300 Subject: [PATCH 24/38] Block duplicate destinations on updates if flag is enabled --- .../secret-sync/secret-sync-service.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/src/services/secret-sync/secret-sync-service.ts b/backend/src/services/secret-sync/secret-sync-service.ts index b3eb05369..a4e2fc467 100644 --- a/backend/src/services/secret-sync/secret-sync-service.ts +++ b/backend/src/services/secret-sync/secret-sync-service.ts @@ -454,6 +454,33 @@ export const secretSyncServiceFactory = ({ let { folderId } = secretSync; + if (params.destinationConfig) { + const project = await projectDAL.findById(secretSync.projectId); + if (!project) { + throw new NotFoundError({ message: "Project not found" }); + } + const organization = await orgDAL.findById(project.orgId); + + if (organization?.blockDuplicateSecretSyncDestinations) { + const duplicateCheck = await checkDuplicateDestination( + { + destination, + destinationConfig: params.destinationConfig, + projectId: secretSync.projectId, + excludeSyncId: secretSync.id + }, + actor + ); + if (duplicateCheck.hasDuplicate) { + throw new BadRequestError({ + message: `A secret sync with this destination already exists${ + duplicateCheck.duplicateProjectId ? ` in project ${duplicateCheck.duplicateProjectId}` : "" + }.` + }); + } + } + } + if (params.connectionId) { const destinationApp = SECRET_SYNC_CONNECTION_MAP[secretSync.destination as SecretSync]; From 676c59d392818f2a6cd08ca36be311556bc7c1d8 Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Tue, 28 Oct 2025 18:11:27 +0530 Subject: [PATCH 25/38] docs: clarify GitLab access token requirements and update setup instructions --- docs/integrations/app-connections/gitlab.mdx | 98 ++++++++++++-------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/docs/integrations/app-connections/gitlab.mdx b/docs/integrations/app-connections/gitlab.mdx index 009ca040e..c9af952a7 100644 --- a/docs/integrations/app-connections/gitlab.mdx +++ b/docs/integrations/app-connections/gitlab.mdx @@ -204,57 +204,75 @@ Infisical supports two methods for connecting to GitLab: **OAuth** and **Access - For Secret Syncs, your token will require the `api` scope and at least a **Maintainer** role or higher. + For Secret Syncs, the required role depends on your sync destination: + - **Project variables**: Requires **Maintainer** role or higher + - **Group variables**: Requires **Owner** role + + Your token will require the `api` scope. + ![GitLab Create Group Token](/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png) Click **Create group access token** to create the token. + + + Use the **Owner** role if you need to sync to group-level variables. The **Maintainer** role is sufficient only for project-level variables. + - For Secret Scanning, your token will require the `api` scope and at least a **Maintainer** role or higher. - ![GitLab Create Group Token](/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png) + To set up Secret Scanning, the required permissions depend on the data source level: + - **Project-level data source:** Requires **Maintainer** role or higher + - **Group-level data source:** Requires **Owner** role - Click **Create group access token** to create the token. - - + Your token will require the `api` scope. - - Group Access Token connections require manual token rotation when your GitLab access token expires or is regenerated. Monitor your connection status and update the token as needed. - - - - Copy the generated token immediately as it won't be shown again. - ![GitLab Group Token Created](/images/app-connections/gitlab/gitlab-group-access-token-created.png) - - Keep your access token secure and do not share it. Anyone with access to this token can access all projects within your GitLab group. - - - - - + ![GitLab Create Group Token](/images/app-connections/gitlab/gitlab-group-access-token-form-secret-sync.png) - ## Setup GitLab Access Token Connection in Infisical + Click **Create group access token** to create the token. + + - - - Navigate to the **App Connections** page in the desired project. - ![App Connections Tab](/images/app-connections/general/add-connection.png) - - - Select the **GitLab Connection** option from the connection options modal. - ![Select GitLab Connection](/images/app-connections/gitlab/select-gitlab-connection.png) - - - Select the **Access Token** method, paste your GitLab access token in the provided field, and select the appropriate token type. + + Group Access Token connections require manual token rotation when your GitLab access token expires or is regenerated. Monitor your connection status and update the token as needed. + + + + Copy the generated token immediately as it won't be shown again. + ![GitLab Group Token Created](/images/app-connections/gitlab/gitlab-group-access-token-created.png) + + Keep your access token secure and do not share it. Anyone with access to this token can access all projects within your GitLab group. + + + - ![Configure Access Token](/images/app-connections/gitlab/create-gitlab-access-token-connection.png) + - Click **Connect** to establish the connection. - - - Your **GitLab Connection** is now available for use. - ![GitLab Access Token Connection](/images/app-connections/gitlab/gitlab-access-token-connection.png) - - + + +## Setup GitLab Access Token Connection in Infisical + + + + Navigate to the **App Connections** page in the desired project. + ![App Connections Tab](/images/app-connections/general/add-connection.png) + + + Select the **GitLab Connection** option from the connection options modal. + ![Select GitLab Connection](/images/app-connections/gitlab/select-gitlab-connection.png) + + + Select the **Access Token** method, paste your GitLab access token in the provided field, and select the appropriate token type. + + ![Configure Access Token](/images/app-connections/gitlab/create-gitlab-access-token-connection.png) + + Click **Connect** to establish the connection. + + + + + Your **GitLab Connection** is now available for use. + ![GitLab Access Token Connection](/images/app-connections/gitlab/gitlab-access-token-connection.png) + + From 6c3e8c1aca836688b892b5b0166133922027dc3a Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Tue, 28 Oct 2025 18:21:43 +0530 Subject: [PATCH 26/38] fix: overview page folder navigation ui bug --- .../pages/secret-manager/OverviewPage/OverviewPage.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 649b959c4..2dc370321 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -277,7 +277,11 @@ export const OverviewPage = () => { }); const isFilteredByResources = Object.values(filter).some(Boolean); - const { isPending: isOverviewLoading, data: overview } = useGetProjectSecretsOverview( + const { + isPending: isOverviewLoading, + data: overview, + isFetching: isOverviewFetching + } = useGetProjectSecretsOverview( { projectId, environments: visibleEnvs.map((env) => env.slug), @@ -631,6 +635,8 @@ export const OverviewPage = () => { }; const handleFolderClick = (path: string) => { + if (isOverviewFetching) return; + // store for breadcrumb nav to restore previously used filters setFilterHistory((prev) => { const curr = new Map(prev); From 1cff5cd7d7cd33c3df42a738c20731f5b5aa9e5f Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 21:50:51 +0800 Subject: [PATCH 27/38] misc: added health and ready probe to docs --- .../guides/production-hardening.mdx | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/docs/self-hosting/guides/production-hardening.mdx b/docs/self-hosting/guides/production-hardening.mdx index dfd7b575f..e8f05730c 100644 --- a/docs/self-hosting/guides/production-hardening.mdx +++ b/docs/self-hosting/guides/production-hardening.mdx @@ -137,6 +137,33 @@ Configure database read replicas for high availability PostgreSQL setups: DB_READ_REPLICAS='[{"DB_CONNECTION_URI":"postgresql://user:pass@replica:5432/db?sslmode=require"}]' ``` +### Health Check Endpoints + +Infisical provides two health check endpoints for proper container orchestration and load balancer integration: + +#### `/api/health` - Container Health Check + +Determines whether the application container should be kept alive or terminated. + +- Returns `200` if the application is running and operational +- Returns `200` even during startup tasks +- Returns `503` only if the application has crashed or is unable to start + +**Use for**: Docker health checks, Kubernetes liveness probes, ECS task health checks. + +#### `/api/ready` - Traffic Readiness Check + +Determines whether the application instance is ready to receive production traffic. + +- Returns `200` when the application is fully ready to serve requests +- Returns `503` during startup tasks (e.g., database migrations, initialization) + +**Use for**: Load balancer health checks, Kubernetes readiness probes, ALB target health checks. + +#### Why Two Endpoints? + +Using both endpoints together enables zero-downtime deployments: containers stay alive during startup tasks (`/api/health` returns `200`) while load balancers avoid sending traffic to instances that aren't ready (`/api/ready` returns `503`). This ensures existing instances continue serving traffic until new instances complete their initialization. + ### Operational Security #### User Access Management @@ -207,14 +234,17 @@ docker run --memory=1g --cpus=0.5 infisical/infisical:latest #### Health Monitoring -**Configure health checks**. Set up Docker health checks: +**Configure health checks**. Set up Docker health checks using the appropriate endpoint: ```dockerfile # In Dockerfile or docker-compose.yml +# Use /api/health for container health (keeps container alive during startup) HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ - CMD curl -f http://localhost:8080/api/status || exit 1 + CMD curl -f http://localhost:8080/api/health || exit 1 ``` +**Note**: Use `/api/health` for container health checks and `/api/ready` for load balancer readiness checks. See [Health Check Endpoints](#health-check-endpoints) for detailed information. + #### Network Security **Host firewall configuration**. Configure host-level firewall for Docker deployments: @@ -433,26 +463,32 @@ stringData: #### Health Monitoring -**Set up health checks**. Configure readiness and liveness probes: +**Set up health checks**. Configure readiness and liveness probes using the appropriate endpoints: ```yaml # Health check configuration containers: - name: infisical + # Use /api/ready for readiness (traffic routing) readinessProbe: httpGet: - path: /api/status + path: /api/ready port: 8080 initialDelaySeconds: 10 periodSeconds: 5 + failureThreshold: 3 + # Use /api/health for liveness (container restart) livenessProbe: httpGet: - path: /api/status + path: /api/health port: 8080 initialDelaySeconds: 30 periodSeconds: 10 + failureThreshold: 3 ``` +**Important**: The `readinessProbe` uses `/api/ready` to ensure traffic is only sent to pods that are fully initialized. The `livenessProbe` uses `/api/health` to keep the container alive during startup. See [Health Check Endpoints](#health-check-endpoints) for detailed information. + #### Infrastructure Considerations **Use managed databases (if possible)**. For production deployments, consider using managed PostgreSQL and Redis services instead of in-cluster instances when feasible, as they typically provide better security, backup, and maintenance capabilities. From cf46cc7c9902a8cea8fda226aa38c719edb6f798 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 28 Oct 2025 11:00:37 -0400 Subject: [PATCH 28/38] small typo fixes for error messages --- .../ee/services/dynamic-secret/dynamic-secret-service.ts | 4 ++-- .../secret-approval-request-service.ts | 2 +- .../external-migration/external-migration-fns/import.ts | 4 ++-- backend/src/services/org/org-service.ts | 4 ++-- backend/src/services/project-env/project-env-service.ts | 4 ++-- backend/src/services/secret-tag/secret-tag-service.ts | 4 ++-- .../services/secret-v2-bridge/secret-v2-bridge-service.ts | 6 +++--- backend/src/services/secret/secret-fns.ts | 4 ++-- backend/src/services/secret/secret-service.ts | 2 +- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts b/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts index d2d683a84..137207659 100644 --- a/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts +++ b/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts @@ -112,7 +112,7 @@ export const dynamicSecretServiceFactory = ({ const existingDynamicSecret = await dynamicSecretDAL.findOne({ name, folderId: folder.id }); if (existingDynamicSecret) - throw new BadRequestError({ message: "Provided dynamic secret already exist under the folder" }); + throw new BadRequestError({ message: "Provided dynamic secret already exists under the folder" }); const selectedProvider = dynamicSecretProviders[provider.type]; const inputs = await selectedProvider.validateProviderInputs(provider.inputs, { projectId }); @@ -265,7 +265,7 @@ export const dynamicSecretServiceFactory = ({ if (newName) { const existingDynamicSecret = await dynamicSecretDAL.findOne({ name: newName, folderId: folder.id }); if (existingDynamicSecret) - throw new BadRequestError({ message: "Provided dynamic secret already exist under the folder" }); + throw new BadRequestError({ message: "Provided dynamic secret already exists under the folder" }); } const { encryptor: secretManagerEncryptor, decryptor: secretManagerDecryptor } = await kmsService.createCipherPairWithDataKey({ diff --git a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts index affec39ad..a10a3f568 100644 --- a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts +++ b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts @@ -1517,7 +1517,7 @@ export const secretApprovalRequestServiceFactory = ({ })) ); if (secrets.length) - throw new BadRequestError({ message: `Secret already exist: ${secrets.map((el) => el.key).join(",")}` }); + throw new BadRequestError({ message: `Secret already exists: ${secrets.map((el) => el.key).join(",")}` }); commits.push( ...createdSecrets.map((createdSecret) => ({ diff --git a/backend/src/services/external-migration/external-migration-fns/import.ts b/backend/src/services/external-migration/external-migration-fns/import.ts index 62888c5bf..3ffd11088 100644 --- a/backend/src/services/external-migration/external-migration-fns/import.ts +++ b/backend/src/services/external-migration/external-migration-fns/import.ts @@ -82,7 +82,7 @@ export const importDataIntoInfisicalFn = async ({ if (existingEnv) { throw new BadRequestError({ - message: `Environment with slug '${slug}' already exist`, + message: `Environment with slug '${slug}' already exists`, name: "CreateEnvironment" }); } @@ -312,7 +312,7 @@ export const importDataIntoInfisicalFn = async ({ ); if (secretsByKeys.length) { throw new BadRequestError({ - message: `Secret already exist: ${secretsByKeys.map((el) => el.key).join(",")}` + message: `Secret already exists: ${secretsByKeys.map((el) => el.key).join(",")}` }); } await fnSecretBulkInsert({ diff --git a/backend/src/services/org/org-service.ts b/backend/src/services/org/org-service.ts index 26de92743..b0bbd9a2a 100644 --- a/backend/src/services/org/org-service.ts +++ b/backend/src/services/org/org-service.ts @@ -517,7 +517,7 @@ export const orgServiceFactory = ({ if (slug) { const existingOrg = await orgDAL.findOne({ slug, rootOrgId: null }); if (existingOrg && existingOrg?.id !== orgId) - throw new BadRequestError({ message: `Organization with slug ${slug} already exist` }); + throw new BadRequestError({ message: `Organization with slug ${slug} already exists` }); } if (googleSsoAuthEnforced) { @@ -1149,7 +1149,7 @@ export const orgServiceFactory = ({ const doesIncidentContactExist = await incidentContactDAL.findOne(orgId, { email }); if (doesIncidentContactExist) { throw new BadRequestError({ - message: "Incident contact already exist", + message: "Incident contact already exists", name: "Incident contact exist" }); } diff --git a/backend/src/services/project-env/project-env-service.ts b/backend/src/services/project-env/project-env-service.ts index bf0bb18af..c402b6030 100644 --- a/backend/src/services/project-env/project-env-service.ts +++ b/backend/src/services/project-env/project-env-service.ts @@ -76,7 +76,7 @@ export const projectEnvServiceFactory = ({ const existingEnv = envs.find(({ slug: envSlug }) => envSlug === slug); if (existingEnv) throw new BadRequestError({ - message: "Environment with slug already exist", + message: "Environment with slug already exists", name: "CreateEnvironment" }); @@ -171,7 +171,7 @@ export const projectEnvServiceFactory = ({ const existingEnv = await projectEnvDAL.findOne({ slug, projectId }); if (existingEnv && existingEnv.id !== id) { throw new BadRequestError({ - message: "Environment with slug already exist", + message: "Environment with slug already exists", name: "UpdateEnvironment" }); } diff --git a/backend/src/services/secret-tag/secret-tag-service.ts b/backend/src/services/secret-tag/secret-tag-service.ts index 8a08c44dd..58913e08c 100644 --- a/backend/src/services/secret-tag/secret-tag-service.ts +++ b/backend/src/services/secret-tag/secret-tag-service.ts @@ -35,7 +35,7 @@ export const secretTagServiceFactory = ({ secretTagDAL, permissionService }: TSe ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Create, ProjectPermissionSub.Tags); const existingTag = await secretTagDAL.findOne({ slug, projectId }); - if (existingTag) throw new BadRequestError({ message: "Tag already exist" }); + if (existingTag) throw new BadRequestError({ message: "Tag already exists" }); const newTag = await secretTagDAL.create({ projectId, @@ -53,7 +53,7 @@ export const secretTagServiceFactory = ({ secretTagDAL, permissionService }: TSe if (slug) { const existingTag = await secretTagDAL.findOne({ slug, projectId: tag.projectId }); - if (existingTag && existingTag.id !== tag.id) throw new BadRequestError({ message: "Tag already exist" }); + if (existingTag && existingTag.id !== tag.id) throw new BadRequestError({ message: "Tag already exists" }); } const { permission } = await permissionService.getProjectPermission({ diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts index 579b19b19..465babebe 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts @@ -282,7 +282,7 @@ export const secretV2BridgeServiceFactory = ({ folderId }); if (inputSecret.type === SecretType.Shared && doesSecretExist) - throw new BadRequestError({ message: "Secret already exist" }); + throw new BadRequestError({ message: "Secret already exists" }); // if user creating personal check its shared also exist if (inputSecret.type === SecretType.Personal && !doesSecretExist) { @@ -527,7 +527,7 @@ export const secretV2BridgeServiceFactory = ({ type: SecretType.Shared, folderId }); - if (doesNewNameSecretExist) throw new BadRequestError({ message: "Secret with the new name already exist" }); + if (doesNewNameSecretExist) throw new BadRequestError({ message: "Secret with the new name already exists" }); ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionSecretActions.Edit, subject(ProjectPermissionSub.Secrets, { @@ -1674,7 +1674,7 @@ export const secretV2BridgeServiceFactory = ({ } }); if (secrets.length) - throw new BadRequestError({ message: `Secret already exist: ${secrets.map((el) => el.key).join(",")}` }); + throw new BadRequestError({ message: `Secret already exists: ${secrets.map((el) => el.key).join(",")}` }); const project = await projectDAL.findById(projectId); await scanSecretPolicyViolations(projectId, secretPath, inputSecrets, project.secretDetectionIgnoreValues || []); diff --git a/backend/src/services/secret/secret-fns.ts b/backend/src/services/secret/secret-fns.ts index 3b97f5891..820260d29 100644 --- a/backend/src/services/secret/secret-fns.ts +++ b/backend/src/services/secret/secret-fns.ts @@ -525,7 +525,7 @@ export const fnSecretBlindIndexCheck = async ({ ); if (isNew) { - if (secrets.length) throw new BadRequestError({ message: "Secret already exist" }); + if (secrets.length) throw new BadRequestError({ message: "Secret already exists" }); } else { const secretKeysInDB = unique(secrets, (el) => el.secretBlindIndex as string).map( (el) => blindIndex2KeyName[el.secretBlindIndex as string] @@ -819,7 +819,7 @@ export const createManySecretsRawFnFactory = ({ ); if (secretsStoredInDB.length) throw new BadRequestError({ - message: `Secret already exist: ${secretsStoredInDB.map((el) => el.key).join(",")}` + message: `Secret already exists: ${secretsStoredInDB.map((el) => el.key).join(",")}` }); const inputSecrets = secrets.map((secret) => { diff --git a/backend/src/services/secret/secret-service.ts b/backend/src/services/secret/secret-service.ts index 723cd368c..9ba1df47d 100644 --- a/backend/src/services/secret/secret-service.ts +++ b/backend/src/services/secret/secret-service.ts @@ -2751,7 +2751,7 @@ export const secretServiceFactory = ({ const existingSecretTags = await secretDAL.getSecretTags(secret.id); if (existingSecretTags.some((tag) => tagSlugs.includes(tag.slug))) { - throw new BadRequestError({ message: "One or more tags already exist on the secret" }); + throw new BadRequestError({ message: "One or more tags already exists on the secret" }); } const combinedTags = new Set([...existingSecretTags.map((tag) => tag.id), ...tags.map((el) => el.id)]); From 9d61b06eec16daa4be2377eac29ce38abe804dae Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 23:08:39 +0800 Subject: [PATCH 29/38] misc: updated processes to run after db migration --- .../secret-rotation-v2-queue.ts | 300 +++---- .../secret-scanning-v2-queue.ts | 825 +++++++++--------- backend/src/main.ts | 15 +- backend/src/server/app.ts | 4 +- backend/src/server/routes/index.ts | 148 ++-- .../notification/notification-queue.ts | 30 +- 6 files changed, 675 insertions(+), 647 deletions(-) diff --git a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts index f653802b6..829c17e7b 100644 --- a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts +++ b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts @@ -42,168 +42,172 @@ export const secretRotationV2QueueServiceFactory = async ({ smtpService, notificationService }: TSecretRotationV2QueueServiceFactoryDep) => { - const appCfg = getConfig(); + const init = async () => { + const appCfg = getConfig(); - if (appCfg.isRotationDevelopmentMode) { - logger.warn("Secret Rotation V2 is in development mode."); - } + if (appCfg.isRotationDevelopmentMode) { + logger.warn("Secret Rotation V2 is in development mode."); + } - await queueService.startPg( - QueueJobs.SecretRotationV2QueueRotations, - async () => { - try { - const rotateBy = getNextUtcRotationInterval(); + await queueService.startPg( + QueueJobs.SecretRotationV2QueueRotations, + async () => { + try { + const rotateBy = getNextUtcRotationInterval(); - const currentTime = new Date(); + const currentTime = new Date(); - const secretRotations = await secretRotationV2DAL.findSecretRotationsToQueue(rotateBy); + const secretRotations = await secretRotationV2DAL.findSecretRotationsToQueue(rotateBy); - logger.info( - `secretRotationV2Queue: Queue Rotations [currentTime=${currentTime.toISOString()}] [rotateBy=${rotateBy.toISOString()}] [count=${ - secretRotations.length - }]` - ); - - for await (const rotation of secretRotations) { logger.info( - `secretRotationV2Queue: Queue Rotation [rotationId=${rotation.id}] [lastRotatedAt=${new Date( - rotation.lastRotatedAt - ).toISOString()}] [rotateAt=${new Date(rotation.nextRotationAt!).toISOString()}]` + `secretRotationV2Queue: Queue Rotations [currentTime=${currentTime.toISOString()}] [rotateBy=${rotateBy.toISOString()}] [count=${ + secretRotations.length + }]` ); - const data = { - rotationId: rotation.id, - queuedAt: currentTime - } as TSecretRotationRotateSecretsJobPayload; - - if (appCfg.isTestMode) { - logger.warn("secretRotationV2Queue: Manually rotating secrets for test mode"); - await rotateSecretsFns({ - job: { - id: uuidv4(), - data, - retryCount: 0, - retryLimit: 0 - }, - secretRotationV2DAL, - secretRotationV2Service - }); - } else { - await queueService.queuePg( - QueueJobs.SecretRotationV2RotateSecrets, - { - rotationId: rotation.id, - queuedAt: currentTime - }, - getSecretRotationRotateSecretJobOptions(rotation) + for await (const rotation of secretRotations) { + logger.info( + `secretRotationV2Queue: Queue Rotation [rotationId=${rotation.id}] [lastRotatedAt=${new Date( + rotation.lastRotatedAt + ).toISOString()}] [rotateAt=${new Date(rotation.nextRotationAt!).toISOString()}]` ); + + const data = { + rotationId: rotation.id, + queuedAt: currentTime + } as TSecretRotationRotateSecretsJobPayload; + + if (appCfg.isTestMode) { + logger.warn("secretRotationV2Queue: Manually rotating secrets for test mode"); + await rotateSecretsFns({ + job: { + id: uuidv4(), + data, + retryCount: 0, + retryLimit: 0 + }, + secretRotationV2DAL, + secretRotationV2Service + }); + } else { + await queueService.queuePg( + QueueJobs.SecretRotationV2RotateSecrets, + { + rotationId: rotation.id, + queuedAt: currentTime + }, + getSecretRotationRotateSecretJobOptions(rotation) + ); + } } + } catch (error) { + logger.error(error, "secretRotationV2Queue: Queue Rotations Error:"); + throw error; } - } catch (error) { - logger.error(error, "secretRotationV2Queue: Queue Rotations Error:"); - throw error; + }, + { + batchSize: 1, + workerCount: 1, + pollingIntervalSeconds: appCfg.isRotationDevelopmentMode ? 0.5 : 30 } - }, - { - batchSize: 1, - workerCount: 1, - pollingIntervalSeconds: appCfg.isRotationDevelopmentMode ? 0.5 : 30 - } - ); + ); - await queueService.startPg( - QueueJobs.SecretRotationV2RotateSecrets, - async ([job]) => { - await rotateSecretsFns({ - job: { - ...job, - data: job.data as TSecretRotationRotateSecretsJobPayload - }, - secretRotationV2DAL, - secretRotationV2Service - }); - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 0.5 - } - ); - - await queueService.startPg( - QueueJobs.SecretRotationV2SendNotification, - async ([job]) => { - const { secretRotation } = job.data as TSecretRotationSendNotificationJobPayload; - try { - const { - name: rotationName, - type, - projectId, - lastRotationAttemptedAt, - folder, - environment, - id: rotationId - } = secretRotation; - - logger.info(`secretRotationV2Queue: Sending Status Notification [rotationId=${rotationId}]`); - - const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); - const project = await projectDAL.findById(projectId); - - const projectAdmins = projectMembers.filter((member) => - member.roles.some((role) => role.role === ProjectMembershipRole.Admin) - ); - - const rotationType = SECRET_ROTATION_NAME_MAP[type as SecretRotation]; - - const rotationPath = `/projects/secret-management/${projectId}/secrets/${environment.slug}`; - - await notificationService.createUserNotifications( - projectAdmins.map((admin) => ({ - userId: admin.userId, - orgId: project.orgId, - type: NotificationType.SECRET_ROTATION_FAILED, - title: "Secret Rotation Failed", - body: `Your **${rotationType}** rotation **${rotationName}** failed to rotate.`, - link: rotationPath - })) - ); - - await smtpService.sendMail({ - recipients: projectAdmins.map((member) => member.user.email!).filter(Boolean), - template: SmtpTemplates.SecretRotationFailed, - subjectLine: `Secret Rotation Failed`, - substitutions: { - rotationName, - rotationType, - content: `Your ${rotationType} Rotation failed to rotate during it's scheduled rotation. The last rotation attempt occurred at ${new Date( - lastRotationAttemptedAt - ).toISOString()}. Please check the rotation status in Infisical for more details.`, - secretPath: folder.path, - environment: environment.name, - projectName: project.name, - rotationUrl: encodeURI(`${appCfg.SITE_URL}${rotationPath}`) - } + await queueService.startPg( + QueueJobs.SecretRotationV2RotateSecrets, + async ([job]) => { + await rotateSecretsFns({ + job: { + ...job, + data: job.data as TSecretRotationRotateSecretsJobPayload + }, + secretRotationV2DAL, + secretRotationV2Service }); - } catch (error) { - logger.error( - error, - `secretRotationV2Queue: Failed to Send Status Notification [rotationId=${secretRotation.id}]` - ); - throw error; + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 0.5 } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); + ); - await queueService.schedulePg( - QueueJobs.SecretRotationV2QueueRotations, - appCfg.isRotationDevelopmentMode ? "* * * * *" : "0 0 * * *", - undefined, - { tz: "UTC" } - ); + await queueService.startPg( + QueueJobs.SecretRotationV2SendNotification, + async ([job]) => { + const { secretRotation } = job.data as TSecretRotationSendNotificationJobPayload; + try { + const { + name: rotationName, + type, + projectId, + lastRotationAttemptedAt, + folder, + environment, + id: rotationId + } = secretRotation; + + logger.info(`secretRotationV2Queue: Sending Status Notification [rotationId=${rotationId}]`); + + const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); + const project = await projectDAL.findById(projectId); + + const projectAdmins = projectMembers.filter((member) => + member.roles.some((role) => role.role === ProjectMembershipRole.Admin) + ); + + const rotationType = SECRET_ROTATION_NAME_MAP[type as SecretRotation]; + + const rotationPath = `/projects/secret-management/${projectId}/secrets/${environment.slug}`; + + await notificationService.createUserNotifications( + projectAdmins.map((admin) => ({ + userId: admin.userId, + orgId: project.orgId, + type: NotificationType.SECRET_ROTATION_FAILED, + title: "Secret Rotation Failed", + body: `Your **${rotationType}** rotation **${rotationName}** failed to rotate.`, + link: rotationPath + })) + ); + + await smtpService.sendMail({ + recipients: projectAdmins.map((member) => member.user.email!).filter(Boolean), + template: SmtpTemplates.SecretRotationFailed, + subjectLine: `Secret Rotation Failed`, + substitutions: { + rotationName, + rotationType, + content: `Your ${rotationType} Rotation failed to rotate during it's scheduled rotation. The last rotation attempt occurred at ${new Date( + lastRotationAttemptedAt + ).toISOString()}. Please check the rotation status in Infisical for more details.`, + secretPath: folder.path, + environment: environment.name, + projectName: project.name, + rotationUrl: encodeURI(`${appCfg.SITE_URL}${rotationPath}`) + } + }); + } catch (error) { + logger.error( + error, + `secretRotationV2Queue: Failed to Send Status Notification [rotationId=${secretRotation.id}]` + ); + throw error; + } + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); + + await queueService.schedulePg( + QueueJobs.SecretRotationV2QueueRotations, + appCfg.isRotationDevelopmentMode ? "* * * * *" : "0 0 * * *", + undefined, + { tz: "UTC" } + ); + }; + + return { init }; }; diff --git a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts index 406c25e03..4830196f6 100644 --- a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts +++ b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts @@ -141,202 +141,6 @@ export const secretScanningV2QueueServiceFactory = async ({ } }; - await queueService.startPg( - QueueJobs.SecretScanningV2FullScan, - async ([job]) => { - const { scanId, resourceId, dataSourceId } = job.data as TQueueSecretScanningDataSourceFullScan; - const { retryCount, retryLimit } = job; - - const logDetails = `[scanId=${scanId}] [resourceId=${resourceId}] [dataSourceId=${dataSourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; - - const tempFolder = await createTempFolder(); - - const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); - - if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); - - const resource = await secretScanningV2DAL.resources.findById(resourceId); - - if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); - - let lock: Awaited> | undefined; - - try { - try { - lock = await keyStore.acquireLock( - [KeyStorePrefixes.SecretScanningLock(dataSource.id, resource.externalId)], - 60 * 1000 * 5 - ); - } catch (e) { - throw new Error("Failed to acquire scanning lock."); - } - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Scanning - } - ); - - let connection: TAppConnection | null = null; - if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); - - const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ - kmsService, - appConnectionDAL - }); - - const findingsPath = join(tempFolder, "findings.json"); - - const scanPath = await factory.getFullScanPath({ - dataSource: { - ...dataSource, - connection - } as TSecretScanningDataSourceWithConnection, - resourceName: resource.name, - tempFolder - }); - - const config = await secretScanningV2DAL.configs.findOne({ - projectId: dataSource.projectId - }); - - let configPath: string | undefined; - - if (config && config.content) { - configPath = join(tempFolder, "infisical-scan.toml"); - await writeTextToFile(configPath, config.content); - } - - let findingsPayload: TFindingsPayload; - switch (resource.type) { - case SecretScanningResource.Repository: - case SecretScanningResource.Project: - findingsPayload = await scanGitRepositoryAndGetFindings(scanPath, findingsPath, configPath); - break; - default: - throw new Error("Unhandled resource type"); - } - - const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { - let findings: TSecretScanningFindings[] = []; - if (findingsPayload.length) { - findings = await secretScanningV2DAL.findings.upsert( - findingsPayload.map((finding) => ({ - ...finding, - projectId: dataSource.projectId, - dataSourceName: dataSource.name, - dataSourceType: dataSource.type, - resourceName: resource.name, - resourceType: resource.type, - scanId - })), - ["projectId", "fingerprint"], - tx, - ["resourceName", "dataSourceName"] - ); - } - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Completed, - statusMessage: null - } - ); - - return findings; - }); - - const newFindings = allFindings.filter((finding) => finding.scanId === scanId); - - if (newFindings.length) { - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Completed, - resourceName: resource.name, - isDiffScan: false, - dataSource, - numberOfSecrets: newFindings.length, - scanId - }); - } - - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId: resource.id, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Completed, - scanType: SecretScanningScanType.FullScan, - numberOfSecretsDetected: findingsPayload.length - } - } - }); - - logger.info(`secretScanningV2Queue: Full Scan Complete ${logDetails} findings=[${findingsPayload.length}]`); - } catch (error) { - if (retryCount === retryLimit) { - const errorMessage = parseScanErrorMessage(error); - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Failed, - statusMessage: errorMessage - } - ); - - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Failed, - resourceName: resource.name, - dataSource, - errorMessage - }); - - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId: resource.id, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Failed, - scanType: SecretScanningScanType.FullScan - } - } - }); - } - - logger.error(error, `secretScanningV2Queue: Full Scan Failed ${logDetails}`); - throw error; - } finally { - await deleteTempFolder(tempFolder); - await lock?.release(); - } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); - const queueResourceDiffScan = async ({ payload, dataSourceId, @@ -391,148 +195,127 @@ export const secretScanningV2QueueServiceFactory = async ({ } }; - await queueService.startPg( - QueueJobs.SecretScanningV2DiffScan, - async ([job]) => { - const { payload, dataSourceId, resourceId, scanId } = job.data as TQueueSecretScanningResourceDiffScan; - const { retryCount, retryLimit } = job; + const init = async () => { + await queueService.startPg( + QueueJobs.SecretScanningV2FullScan, + async ([job]) => { + const { scanId, resourceId, dataSourceId } = job.data as TQueueSecretScanningDataSourceFullScan; + const { retryCount, retryLimit } = job; - const logDetails = `[dataSourceId=${dataSourceId}] [scanId=${scanId}] [resourceId=${resourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; + const logDetails = `[scanId=${scanId}] [resourceId=${resourceId}] [dataSourceId=${dataSourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; - const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); + const tempFolder = await createTempFolder(); - if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); + const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); - const resource = await secretScanningV2DAL.resources.findById(resourceId); + if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); - if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); + const resource = await secretScanningV2DAL.resources.findById(resourceId); - const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ - kmsService, - appConnectionDAL - }); + if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); - const tempFolder = await createTempFolder(); + let lock: Awaited> | undefined; - try { - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Scanning - } - ); - - let connection: TAppConnection | null = null; - if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); - - const config = await secretScanningV2DAL.configs.findOne({ - projectId: dataSource.projectId - }); - - let configPath: string | undefined; - - if (config && config.content) { - configPath = join(tempFolder, "infisical-scan.toml"); - await writeTextToFile(configPath, config.content); - } - - const findingsPayload = await factory.getDiffScanFindingsPayload({ - dataSource: { - ...dataSource, - connection - } as TSecretScanningDataSourceWithConnection, - resourceName: resource.name, - payload, - configPath - }); - - const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { - let findings: TSecretScanningFindings[] = []; - - if (findingsPayload.length) { - findings = await secretScanningV2DAL.findings.upsert( - findingsPayload.map((finding) => ({ - ...finding, - projectId: dataSource.projectId, - dataSourceName: dataSource.name, - dataSourceType: dataSource.type, - resourceName: resource.name, - resourceType: resource.type, - scanId - })), - ["projectId", "fingerprint"], - tx, - ["resourceName", "dataSourceName"] + try { + try { + lock = await keyStore.acquireLock( + [KeyStorePrefixes.SecretScanningLock(dataSource.id, resource.externalId)], + 60 * 1000 * 5 ); + } catch (e) { + throw new Error("Failed to acquire scanning lock."); } await secretScanningV2DAL.scans.update( { id: scanId }, { - status: SecretScanningScanStatus.Completed + status: SecretScanningScanStatus.Scanning } ); - return findings; - }); + let connection: TAppConnection | null = null; + if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); - const newFindings = allFindings.filter((finding) => finding.scanId === scanId); - - if (newFindings.length) { - const finding = newFindings[0] as TSecretScanningFinding; - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Completed, - resourceName: resource.name, - isDiffScan: true, - dataSource, - numberOfSecrets: newFindings.length, - scanId, - authorName: finding?.details?.author, - authorEmail: finding?.details?.email + const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ + kmsService, + appConnectionDAL }); - } - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Completed, - scanType: SecretScanningScanType.DiffScan, - numberOfSecretsDetected: findingsPayload.length - } + const findingsPath = join(tempFolder, "findings.json"); + + const scanPath = await factory.getFullScanPath({ + dataSource: { + ...dataSource, + connection + } as TSecretScanningDataSourceWithConnection, + resourceName: resource.name, + tempFolder + }); + + const config = await secretScanningV2DAL.configs.findOne({ + projectId: dataSource.projectId + }); + + let configPath: string | undefined; + + if (config && config.content) { + configPath = join(tempFolder, "infisical-scan.toml"); + await writeTextToFile(configPath, config.content); } - }); - logger.info(`secretScanningV2Queue: Diff Scan Complete ${logDetails}`); - } catch (error) { - if (retryCount === retryLimit) { - const errorMessage = parseScanErrorMessage(error); + let findingsPayload: TFindingsPayload; + switch (resource.type) { + case SecretScanningResource.Repository: + case SecretScanningResource.Project: + findingsPayload = await scanGitRepositoryAndGetFindings(scanPath, findingsPath, configPath); + break; + default: + throw new Error("Unhandled resource type"); + } - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Failed, - statusMessage: errorMessage + const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { + let findings: TSecretScanningFindings[] = []; + if (findingsPayload.length) { + findings = await secretScanningV2DAL.findings.upsert( + findingsPayload.map((finding) => ({ + ...finding, + projectId: dataSource.projectId, + dataSourceName: dataSource.name, + dataSourceType: dataSource.type, + resourceName: resource.name, + resourceType: resource.type, + scanId + })), + ["projectId", "fingerprint"], + tx, + ["resourceName", "dataSourceName"] + ); } - ); - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Failed, - resourceName: resource.name, - dataSource, - errorMessage + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Completed, + statusMessage: null + } + ); + + return findings; }); + const newFindings = allFindings.filter((finding) => finding.scanId === scanId); + + if (newFindings.length) { + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Completed, + resourceName: resource.name, + isDiffScan: false, + dataSource, + numberOfSecrets: newFindings.length, + scanId + }); + } + await auditLogService.createAuditLog({ projectId: dataSource.projectId, actor: { @@ -547,128 +330,348 @@ export const secretScanningV2QueueServiceFactory = async ({ resourceId: resource.id, resourceType: resource.type, scanId, - scanStatus: SecretScanningScanStatus.Failed, - scanType: SecretScanningScanType.DiffScan + scanStatus: SecretScanningScanStatus.Completed, + scanType: SecretScanningScanType.FullScan, + numberOfSecretsDetected: findingsPayload.length } } }); + + logger.info(`secretScanningV2Queue: Full Scan Complete ${logDetails} findings=[${findingsPayload.length}]`); + } catch (error) { + if (retryCount === retryLimit) { + const errorMessage = parseScanErrorMessage(error); + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Failed, + statusMessage: errorMessage + } + ); + + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Failed, + resourceName: resource.name, + dataSource, + errorMessage + }); + + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId: resource.id, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Failed, + scanType: SecretScanningScanType.FullScan + } + } + }); + } + + logger.error(error, `secretScanningV2Queue: Full Scan Failed ${logDetails}`); + throw error; + } finally { + await deleteTempFolder(tempFolder); + await lock?.release(); } - - logger.error(error, `secretScanningV2Queue: Diff Scan Failed ${logDetails}`); - throw error; - } finally { - await deleteTempFolder(tempFolder); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); + ); - await queueService.startPg( - QueueJobs.SecretScanningV2SendNotification, - async ([job]) => { - const { dataSource, resourceName, ...payload } = job.data as TQueueSecretScanningSendNotification; + await queueService.startPg( + QueueJobs.SecretScanningV2DiffScan, + async ([job]) => { + const { payload, dataSourceId, resourceId, scanId } = job.data as TQueueSecretScanningResourceDiffScan; + const { retryCount, retryLimit } = job; - const appCfg = getConfig(); + const logDetails = `[dataSourceId=${dataSourceId}] [scanId=${scanId}] [resourceId=${resourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; - if (!appCfg.isSmtpConfigured) return; + const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); - try { - const { projectId } = dataSource; + if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); - logger.info( - `secretScanningV2Queue: Sending Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` - ); + const resource = await secretScanningV2DAL.resources.findById(resourceId); - const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); - const project = await projectDAL.findById(projectId); + if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); - const recipients = projectMembers.filter((member) => { - const isAdmin = member.roles.some((role) => role.role === ProjectMembershipRole.Admin); - const isCompleted = payload.status === SecretScanningScanStatus.Completed; - // We assume that the committer is one of the project members - const isCommitter = isCompleted && payload.authorEmail === member.user.email; - return isAdmin || isCommitter; + const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ + kmsService, + appConnectionDAL }); - const timestamp = new Date().toISOString(); + const tempFolder = await createTempFolder(); - const subjectLine = - payload.status === SecretScanningScanStatus.Completed - ? "Incident Alert: Secret(s) Leaked" - : `Secret Scanning Failed`; + try { + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Scanning + } + ); - await notificationService.createUserNotifications( - recipients.map((member) => ({ - userId: member.userId, - orgId: project.orgId, - type: - payload.status === SecretScanningScanStatus.Completed - ? NotificationType.SECRET_SCANNING_SECRETS_DETECTED - : NotificationType.SECRET_SCANNING_SCAN_FAILED, - title: subjectLine, - body: - payload.status === SecretScanningScanStatus.Completed - ? `Uncovered **${payload.numberOfSecrets}** secret(s) ${payload.isDiffScan ? " from a recent commit to" : " in"} **${resourceName}**.` - : `Encountered an error while attempting to scan the resource **${resourceName}**: ${payload.errorMessage}`, - link: - payload.status === SecretScanningScanStatus.Completed - ? `/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` - : `/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` - })) - ); + let connection: TAppConnection | null = null; + if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); - await smtpService.sendMail({ - recipients: recipients.map((member) => member.user.email!).filter(Boolean), - template: - payload.status === SecretScanningScanStatus.Completed - ? SmtpTemplates.SecretScanningV2SecretsDetected - : SmtpTemplates.SecretScanningV2ScanFailed, - subjectLine, - substitutions: - payload.status === SecretScanningScanStatus.Completed - ? { - authorName: payload.authorName, - authorEmail: payload.authorEmail, - resourceName, - numberOfSecrets: payload.numberOfSecrets, - isDiffScan: payload.isDiffScan, - url: encodeURI( - `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` - ), - timestamp - } - : { + const config = await secretScanningV2DAL.configs.findOne({ + projectId: dataSource.projectId + }); + + let configPath: string | undefined; + + if (config && config.content) { + configPath = join(tempFolder, "infisical-scan.toml"); + await writeTextToFile(configPath, config.content); + } + + const findingsPayload = await factory.getDiffScanFindingsPayload({ + dataSource: { + ...dataSource, + connection + } as TSecretScanningDataSourceWithConnection, + resourceName: resource.name, + payload, + configPath + }); + + const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { + let findings: TSecretScanningFindings[] = []; + + if (findingsPayload.length) { + findings = await secretScanningV2DAL.findings.upsert( + findingsPayload.map((finding) => ({ + ...finding, + projectId: dataSource.projectId, dataSourceName: dataSource.name, - resourceName, - projectName: project.name, - timestamp, - errorMessage: payload.errorMessage, - url: encodeURI( - `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` - ) + dataSourceType: dataSource.type, + resourceName: resource.name, + resourceType: resource.type, + scanId + })), + ["projectId", "fingerprint"], + tx, + ["resourceName", "dataSourceName"] + ); + } + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Completed + } + ); + + return findings; + }); + + const newFindings = allFindings.filter((finding) => finding.scanId === scanId); + + if (newFindings.length) { + const finding = newFindings[0] as TSecretScanningFinding; + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Completed, + resourceName: resource.name, + isDiffScan: true, + dataSource, + numberOfSecrets: newFindings.length, + scanId, + authorName: finding?.details?.author, + authorEmail: finding?.details?.email + }); + } + + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Completed, + scanType: SecretScanningScanType.DiffScan, + numberOfSecretsDetected: findingsPayload.length + } + } + }); + + logger.info(`secretScanningV2Queue: Diff Scan Complete ${logDetails}`); + } catch (error) { + if (retryCount === retryLimit) { + const errorMessage = parseScanErrorMessage(error); + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Failed, + statusMessage: errorMessage + } + ); + + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Failed, + resourceName: resource.name, + dataSource, + errorMessage + }); + + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId: resource.id, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Failed, + scanType: SecretScanningScanType.DiffScan } - }); - } catch (error) { - logger.error( - error, - `secretScanningV2Queue: Failed to Send Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` - ); - throw error; + } + }); + } + + logger.error(error, `secretScanningV2Queue: Diff Scan Failed ${logDetails}`); + throw error; + } finally { + await deleteTempFolder(tempFolder); + } + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); + ); + + await queueService.startPg( + QueueJobs.SecretScanningV2SendNotification, + async ([job]) => { + const { dataSource, resourceName, ...payload } = job.data as TQueueSecretScanningSendNotification; + + const appCfg = getConfig(); + + if (!appCfg.isSmtpConfigured) return; + + try { + const { projectId } = dataSource; + + logger.info( + `secretScanningV2Queue: Sending Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` + ); + + const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); + const project = await projectDAL.findById(projectId); + + const recipients = projectMembers.filter((member) => { + const isAdmin = member.roles.some((role) => role.role === ProjectMembershipRole.Admin); + const isCompleted = payload.status === SecretScanningScanStatus.Completed; + // We assume that the committer is one of the project members + const isCommitter = isCompleted && payload.authorEmail === member.user.email; + return isAdmin || isCommitter; + }); + + const timestamp = new Date().toISOString(); + + const subjectLine = + payload.status === SecretScanningScanStatus.Completed + ? "Incident Alert: Secret(s) Leaked" + : `Secret Scanning Failed`; + + await notificationService.createUserNotifications( + recipients.map((member) => ({ + userId: member.userId, + orgId: project.orgId, + type: + payload.status === SecretScanningScanStatus.Completed + ? NotificationType.SECRET_SCANNING_SECRETS_DETECTED + : NotificationType.SECRET_SCANNING_SCAN_FAILED, + title: subjectLine, + body: + payload.status === SecretScanningScanStatus.Completed + ? `Uncovered **${payload.numberOfSecrets}** secret(s) ${payload.isDiffScan ? " from a recent commit to" : " in"} **${resourceName}**.` + : `Encountered an error while attempting to scan the resource **${resourceName}**: ${payload.errorMessage}`, + link: + payload.status === SecretScanningScanStatus.Completed + ? `/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` + : `/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` + })) + ); + + await smtpService.sendMail({ + recipients: recipients.map((member) => member.user.email!).filter(Boolean), + template: + payload.status === SecretScanningScanStatus.Completed + ? SmtpTemplates.SecretScanningV2SecretsDetected + : SmtpTemplates.SecretScanningV2ScanFailed, + subjectLine, + substitutions: + payload.status === SecretScanningScanStatus.Completed + ? { + authorName: payload.authorName, + authorEmail: payload.authorEmail, + resourceName, + numberOfSecrets: payload.numberOfSecrets, + isDiffScan: payload.isDiffScan, + url: encodeURI( + `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` + ), + timestamp + } + : { + dataSourceName: dataSource.name, + resourceName, + projectName: project.name, + timestamp, + errorMessage: payload.errorMessage, + url: encodeURI( + `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` + ) + } + }); + } catch (error) { + logger.error( + error, + `secretScanningV2Queue: Failed to Send Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` + ); + throw error; + } + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); + }; return { queueDataSourceFullScan, - queueResourceDiffScan + queueResourceDiffScan, + init }; }; diff --git a/backend/src/main.ts b/backend/src/main.ts index 9d7812c96..d36d706ba 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -72,7 +72,7 @@ const run = async () => { const keyStore = keyStoreFactory(envConfig, keyValueStoreDAL); const redis = buildRedisFromConfig(envConfig); - const server = await main({ + const { server, completeServerInitialization } = await main({ db, auditLogDb, superAdminDAL, @@ -140,7 +140,18 @@ const run = async () => { } }); - logger.info("Migrations complete. Marking server as READY..."); + logger.info("Migrations complete. Completing server initialization..."); + + try { + await completeServerInitialization(); + } catch (error) { + logger.error(error, "Failed to complete server initialization"); + await server.close(); + await queue.shutdown(); + process.exit(1); + } + + logger.info("Server initialization complete. Marking server as READY..."); markServerReady(); diff --git a/backend/src/server/app.ts b/backend/src/server/app.ts index daf49ed10..17a9feb2a 100644 --- a/backend/src/server/app.ts +++ b/backend/src/server/app.ts @@ -221,7 +221,7 @@ export const main = async ({ }; }); - await server.register(registerRoutes, { + const completeServerInitialization = await registerRoutes(server, { smtp, queue, db, @@ -240,7 +240,7 @@ export const main = async ({ await server.ready(); server.swagger(); - return server; + return { server, completeServerInitialization }; } catch (err) { server.log.error(err); await queue.shutdown(); diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index c135db83e..44a5c8503 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2206,7 +2206,7 @@ export const registerRoutes = async ( internalCaFns }); - await secretRotationV2QueueServiceFactory({ + const secretRotationV2Queue = await secretRotationV2QueueServiceFactory({ secretRotationV2Service, secretRotationV2DAL, queueService, @@ -2300,50 +2300,87 @@ export const registerRoutes = async ( // setup the communication with license key server await licenseService.init(); - // If FIPS is enabled, we check to ensure that the users license includes FIPS mode. - crypto.verifyFipsLicense(licenseService); + const completeServerInitialization = async () => { + await superAdminService.initServerCfg(); - await superAdminService.initServerCfg(); + // If FIPS is enabled, we check to ensure that the users license includes FIPS mode. + crypto.verifyFipsLicense(licenseService); - // Start HSM service if it's configured/enabled. - await hsmService.startService(); + // Start HSM service if it's configured/enabled. + await hsmService.startService(); - const hsmStatus = await isHsmActiveAndEnabled({ - hsmService, - kmsRootConfigDAL, - licenseService - }); + const hsmStatus = await isHsmActiveAndEnabled({ + hsmService, + kmsRootConfigDAL, + licenseService + }); - // if the encryption strategy is software - user needs to provide an encryption key - // if the encryption strategy is null AND the hsm is not configured - user needs to provide an encryption key - const needsEncryptionKey = - hsmStatus.rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.Software || - (hsmStatus.rootKmsConfigEncryptionStrategy === null && !hsmStatus.isHsmConfigured); + // if the encryption strategy is software - user needs to provide an encryption key + // if the encryption strategy is null AND the hsm is not configured - user needs to provide an encryption key + const needsEncryptionKey = + hsmStatus.rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.Software || + (hsmStatus.rootKmsConfigEncryptionStrategy === null && !hsmStatus.isHsmConfigured); - if (needsEncryptionKey) { - if (!envConfig.ROOT_ENCRYPTION_KEY && !envConfig.ENCRYPTION_KEY) { - throw new BadRequestError({ - message: - "Root KMS encryption strategy is set to software. Please set the ENCRYPTION_KEY environment variable and restart your deployment.\nYou can enable HSM encryption in the Server Console." - }); + if (needsEncryptionKey) { + if (!envConfig.ROOT_ENCRYPTION_KEY && !envConfig.ENCRYPTION_KEY) { + throw new BadRequestError({ + message: + "Root KMS encryption strategy is set to software. Please set the ENCRYPTION_KEY environment variable and restart your deployment.\nYou can enable HSM encryption in the Server Console." + }); + } } - } - await telemetryQueue.startTelemetryCheck(); - await telemetryQueue.startAggregatedEventsJob(); - await dailyResourceCleanUp.init(); - await healthAlert.init(); - await pkiSyncCleanup.init(); - await pamAccountRotation.init(); - await dailyReminderQueueService.startDailyRemindersJob(); - await dailyReminderQueueService.startSecretReminderMigrationJob(); - await dailyExpiringPkiItemAlert.startSendingAlerts(); - await pkiSubscriberQueue.startDailyAutoRenewalJob(); - await certificateV3Queue.init(); - await kmsService.startService(hsmStatus); - await microsoftTeamsService.start(); - await dynamicSecretQueueService.init(); - await eventBusService.init(); + await telemetryQueue.startTelemetryCheck(); + await telemetryQueue.startAggregatedEventsJob(); + await dailyResourceCleanUp.init(); + await healthAlert.init(); + await pkiSyncCleanup.init(); + await pamAccountRotation.init(); + await dailyReminderQueueService.startDailyRemindersJob(); + await dailyReminderQueueService.startSecretReminderMigrationJob(); + await dailyExpiringPkiItemAlert.startSendingAlerts(); + await pkiSubscriberQueue.startDailyAutoRenewalJob(); + await certificateV3Queue.init(); + await kmsService.startService(hsmStatus); + await microsoftTeamsService.start(); + await dynamicSecretQueueService.init(); + await secretScanningV2Queue.init(); + await secretRotationV2Queue.init(); + await notificationQueue.init(); + await eventBusService.init(); + + const cronJobs: CronJob[] = []; + if (appCfg.isProductionMode) { + const rateLimitSyncJob = await rateLimitService.initializeBackgroundSync(); + if (rateLimitSyncJob) { + cronJobs.push(rateLimitSyncJob); + } + const licenseSyncJob = await licenseService.initializeBackgroundSync(); + if (licenseSyncJob) { + cronJobs.push(licenseSyncJob); + } + + const microsoftTeamsSyncJob = await microsoftTeamsService.initializeBackgroundSync(); + if (microsoftTeamsSyncJob) { + cronJobs.push(microsoftTeamsSyncJob); + } + + const adminIntegrationsSyncJob = await superAdminService.initializeAdminIntegrationConfigSync(); + if (adminIntegrationsSyncJob) { + cronJobs.push(adminIntegrationsSyncJob); + } + } + + const configSyncJob = await superAdminService.initializeEnvConfigSync(); + if (configSyncJob) { + cronJobs.push(configSyncJob); + } + + const oauthConfigSyncJob = await initializeOauthConfigSync(); + if (oauthConfigSyncJob) { + cronJobs.push(oauthConfigSyncJob); + } + }; // inject all services server.decorate("services", { @@ -2473,38 +2510,6 @@ export const registerRoutes = async ( convertor: convertorService }); - const cronJobs: CronJob[] = []; - if (appCfg.isProductionMode) { - const rateLimitSyncJob = await rateLimitService.initializeBackgroundSync(); - if (rateLimitSyncJob) { - cronJobs.push(rateLimitSyncJob); - } - const licenseSyncJob = await licenseService.initializeBackgroundSync(); - if (licenseSyncJob) { - cronJobs.push(licenseSyncJob); - } - - const microsoftTeamsSyncJob = await microsoftTeamsService.initializeBackgroundSync(); - if (microsoftTeamsSyncJob) { - cronJobs.push(microsoftTeamsSyncJob); - } - - const adminIntegrationsSyncJob = await superAdminService.initializeAdminIntegrationConfigSync(); - if (adminIntegrationsSyncJob) { - cronJobs.push(adminIntegrationsSyncJob); - } - } - - const configSyncJob = await superAdminService.initializeEnvConfigSync(); - if (configSyncJob) { - cronJobs.push(configSyncJob); - } - - const oauthConfigSyncJob = await initializeOauthConfigSync(); - if (oauthConfigSyncJob) { - cronJobs.push(oauthConfigSyncJob); - } - server.decorate("store", { user: userDAL, kmipClient: kmipClientDAL @@ -2593,9 +2598,10 @@ export const registerRoutes = async ( await server.register(registerV4Routes, { prefix: "/api/v4" }); server.addHook("onClose", async () => { - cronJobs.forEach((job) => job.stop()); await telemetryService.flushAll(); await eventBusService.close(); sseService.close(); }); + + return completeServerInitialization; }; diff --git a/backend/src/services/notification/notification-queue.ts b/backend/src/services/notification/notification-queue.ts index e5d89c83b..aaff8e23f 100644 --- a/backend/src/services/notification/notification-queue.ts +++ b/backend/src/services/notification/notification-queue.ts @@ -10,6 +10,7 @@ type TNotificationQueueServiceFactoryDep = { export type TNotificationQueueServiceFactory = { pushUserNotifications: (data: TCreateUserNotificationDTO[]) => Promise; + init: () => Promise; }; export const notificationQueueServiceFactory = async ({ @@ -20,20 +21,23 @@ export const notificationQueueServiceFactory = async ({ await queueService.queuePg(QueueJobs.UserNotification, { notifications: data }); }; - await queueService.startPg( - QueueJobs.UserNotification, - async ([job]) => { - const { notifications } = job.data as { notifications: TCreateUserNotificationDTO[] }; - await userNotificationDAL.batchInsert(notifications); - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); + const init = async () => { + await queueService.startPg( + QueueJobs.UserNotification, + async ([job]) => { + const { notifications } = job.data as { notifications: TCreateUserNotificationDTO[] }; + await userNotificationDAL.batchInsert(notifications); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); + }; return { - pushUserNotifications + pushUserNotifications, + init }; }; From 8c9a68346857ed175ba7cea5deb48df4e8c884a6 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 23:20:18 +0800 Subject: [PATCH 30/38] misc: addressed e2e failure --- backend/e2e-test/vitest-environment-knex.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/e2e-test/vitest-environment-knex.ts b/backend/e2e-test/vitest-environment-knex.ts index f33d32f6a..5ee84a7c7 100644 --- a/backend/e2e-test/vitest-environment-knex.ts +++ b/backend/e2e-test/vitest-environment-knex.ts @@ -83,7 +83,7 @@ export default { await queue.initialize(); - const server = await main({ + const { server, completeServerInitialization } = await main({ db, smtp, logger, @@ -96,6 +96,8 @@ export default { envConfig: envCfg }); + await completeServerInitialization(); + markServerReady(); await bootstrapCheck({ db }); From 8c5c88aefb2ab922d1b9b603595aae940dfd9df8 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 Oct 2025 23:41:25 +0800 Subject: [PATCH 31/38] misc: corrected hsm placement --- backend/src/ee/services/hsm/hsm-fns.ts | 2 +- backend/src/server/routes/index.ts | 54 +++++++++++++------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/backend/src/ee/services/hsm/hsm-fns.ts b/backend/src/ee/services/hsm/hsm-fns.ts index 400fa31e9..d37766f71 100644 --- a/backend/src/ee/services/hsm/hsm-fns.ts +++ b/backend/src/ee/services/hsm/hsm-fns.ts @@ -84,7 +84,7 @@ export const isHsmActiveAndEnabled = async ({ rootKmsConfigEncryptionStrategy = (rootKmsConfig?.encryptionStrategy || null) as RootKeyEncryptionStrategy | null; if ( - rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.HSM && + (rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.HSM || isHsmConfigured) && licenseService && !licenseService.onPremFeatures.hsm ) { diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 44a5c8503..d50f3d01e 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2300,36 +2300,36 @@ export const registerRoutes = async ( // setup the communication with license key server await licenseService.init(); + // If FIPS is enabled, we check to ensure that the users license includes FIPS mode. + crypto.verifyFipsLicense(licenseService); + + // Start HSM service if it's configured/enabled. + await hsmService.startService(); + + const hsmStatus = await isHsmActiveAndEnabled({ + hsmService, + kmsRootConfigDAL, + licenseService + }); + + // if the encryption strategy is software - user needs to provide an encryption key + // if the encryption strategy is null AND the hsm is not configured - user needs to provide an encryption key + const needsEncryptionKey = + hsmStatus.rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.Software || + (hsmStatus.rootKmsConfigEncryptionStrategy === null && !hsmStatus.isHsmConfigured); + + if (needsEncryptionKey) { + if (!envConfig.ROOT_ENCRYPTION_KEY && !envConfig.ENCRYPTION_KEY) { + throw new BadRequestError({ + message: + "Root KMS encryption strategy is set to software. Please set the ENCRYPTION_KEY environment variable and restart your deployment.\nYou can enable HSM encryption in the Server Console." + }); + } + } + const completeServerInitialization = async () => { await superAdminService.initServerCfg(); - // If FIPS is enabled, we check to ensure that the users license includes FIPS mode. - crypto.verifyFipsLicense(licenseService); - - // Start HSM service if it's configured/enabled. - await hsmService.startService(); - - const hsmStatus = await isHsmActiveAndEnabled({ - hsmService, - kmsRootConfigDAL, - licenseService - }); - - // if the encryption strategy is software - user needs to provide an encryption key - // if the encryption strategy is null AND the hsm is not configured - user needs to provide an encryption key - const needsEncryptionKey = - hsmStatus.rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.Software || - (hsmStatus.rootKmsConfigEncryptionStrategy === null && !hsmStatus.isHsmConfigured); - - if (needsEncryptionKey) { - if (!envConfig.ROOT_ENCRYPTION_KEY && !envConfig.ENCRYPTION_KEY) { - throw new BadRequestError({ - message: - "Root KMS encryption strategy is set to software. Please set the ENCRYPTION_KEY environment variable and restart your deployment.\nYou can enable HSM encryption in the Server Console." - }); - } - } - await telemetryQueue.startTelemetryCheck(); await telemetryQueue.startAggregatedEventsJob(); await dailyResourceCleanUp.init(); From 71972f9ffb6e73c3af055c314fd6e0eace5c03d2 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 29 Oct 2025 00:15:07 +0800 Subject: [PATCH 32/38] misc: separate migration steps for remvoing fk and orphaned identities --- ...0251019061215_sub-org-identity-backfill.ts | 5 ----- ...-access-token-remove-fk-for-identity-id.ts | 22 +++++++++++++++++++ ...20251028160921_delete-no-org-identities.ts | 20 +++++++++++++++++ 3 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 backend/src/db/migrations/20251028155708_identity-access-token-remove-fk-for-identity-id.ts create mode 100644 backend/src/db/migrations/20251028160921_delete-no-org-identities.ts diff --git a/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts b/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts index 71e8924d4..9054a03ee 100644 --- a/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts +++ b/backend/src/db/migrations/20251019061215_sub-org-identity-backfill.ts @@ -38,11 +38,6 @@ export async function up(knex: Knex): Promise { .merge(); } } - - await tx(TableName.Identity).whereNull("orgId").delete(); - await tx.schema.alterTable(TableName.Identity, (t) => { - t.uuid("orgId").notNullable().alter(); - }); } }); } diff --git a/backend/src/db/migrations/20251028155708_identity-access-token-remove-fk-for-identity-id.ts b/backend/src/db/migrations/20251028155708_identity-access-token-remove-fk-for-identity-id.ts new file mode 100644 index 000000000..0974f39c2 --- /dev/null +++ b/backend/src/db/migrations/20251028155708_identity-access-token-remove-fk-for-identity-id.ts @@ -0,0 +1,22 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + await knex.transaction(async (tx) => { + await tx.schema.alterTable(TableName.IdentityAccessToken, (table) => { + table.dropForeign("identityId"); + }); + }); +} + +export async function down(knex: Knex): Promise { + await knex.transaction(async (tx) => { + await tx.schema.alterTable(TableName.IdentityAccessToken, (table) => { + table.foreign("identityId").references("id").inTable(TableName.Identity); + }); + }); +} + +const config = { transaction: false }; +export { config }; diff --git a/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts new file mode 100644 index 000000000..bf4692cf0 --- /dev/null +++ b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts @@ -0,0 +1,20 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + await knex.transaction(async (tx) => { + const hasIdentityOrgCol = await tx.schema.hasColumn(TableName.Identity, "orgId"); + if (hasIdentityOrgCol) { + await tx(TableName.Identity).whereNull("orgId").delete(); + await tx.schema.alterTable(TableName.Identity, (t) => { + t.uuid("orgId").notNullable().alter(); + }); + } + }); +} + +export async function down(): Promise {} + +const config = { transaction: false }; +export { config }; From 48c06f02a58efc8c9df61de52dce24f42f0baa82 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 28 Oct 2025 10:16:14 -0700 Subject: [PATCH 33/38] fix: update badge variants for certificate renewal --- .../components/CertificatesTable.tsx | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx index 03464e579..500286d67 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx @@ -5,12 +5,12 @@ import { faEllipsis, faEye, faFileExport, - faQuestionCircle, faRedo, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format } from "date-fns"; +import { CircleQuestionMarkIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; @@ -58,7 +58,7 @@ const isExpiringWithinOneDay = (notAfter: string): boolean => { const getAutoRenewalInfo = (certificate: TCertificate) => { if (certificate.renewedByCertificateId) { - return { text: "Renewed", variant: "instance" as const }; + return { text: "Renewed", variant: "neutral" as const }; } const isRevoked = certificate.status === CertStatus.REVOKED; @@ -69,7 +69,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { if (isRevoked) { return { text: "Not Available", - variant: "instance" as const, + variant: "neutral" as const, tooltip: "Renewal is not available for revoked certificates" }; } @@ -77,7 +77,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { if (isExpired) { return { text: "Not Available", - variant: "instance" as const, + variant: "neutral" as const, tooltip: "Renewal is not available for expired certificates" }; } @@ -85,7 +85,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { if (hasNoProfile) { return { text: "Not Available", - variant: "instance" as const, + variant: "neutral" as const, tooltip: "Renewal requires a certificate profile" }; } @@ -93,7 +93,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { if (certificate.hasPrivateKey === false) { return { text: "Not Available", - variant: "instance" as const, + variant: "neutral" as const, tooltip: "Renewal is not available for certificates with externally generated private keys" }; } @@ -101,7 +101,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { if (isExpiringWithinDay) { return { text: "Not Available", - variant: "instance" as const, + variant: "neutral" as const, tooltip: "Auto-renewal is not available for certificates expiring within 24 hours" }; } @@ -115,7 +115,7 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { } if (!certificate.renewBeforeDays) { - return { text: "Auto-Renewal Disabled", variant: "primary" as const }; + return { text: "Auto-Renewal Disabled", variant: "warning" as const }; } const notAfterDate = new Date(certificate.notAfter); @@ -133,11 +133,11 @@ const getAutoRenewalInfo = (certificate: TCertificate) => { ); if (daysUntilRenewal === 0) { - return { text: "Renews today", variant: "primary" as const }; + return { text: "Renews today", variant: "warning" as const }; } if (daysUntilRenewal <= 7) { - return { text: `Renews in ${daysUntilRenewal}d`, variant: "primary" as const }; + return { text: `Renews in ${daysUntilRenewal}d`, variant: "warning" as const }; } return { text: `Renews in ${daysUntilRenewal}d`, variant: "success" as const }; @@ -279,16 +279,12 @@ export const CertificatesTable = ({ handlePopUpOpen }: Props) => { {autoRenewalInfo && (autoRenewalInfo.tooltip ? (
      - - {autoRenewalInfo.text} - - - - + + + {autoRenewalInfo.text} + + +
      ) : ( {autoRenewalInfo.text} From deb12249df955ffc942d4524e79c28097a3add00 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 29 Oct 2025 02:06:27 +0800 Subject: [PATCH 34/38] fix: addressed outdated org permission usage --- .../external-migration-service.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 55d4a9868..42fdc2c26 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -772,13 +772,14 @@ export const externalMigrationServiceFactory = ({ namespace: string; mountPath: string; }) => { - const { hasRole } = await permissionService.getOrgPermission( - actor.type, - actor.id, - actor.orgId, - actor.authMethod, - actor.orgId - ); + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); if (!hasRole(OrgMembershipRole.Admin)) { throw new ForbiddenRequestError({ message: "Only admins can get Kubernetes roles" }); From 394f1ae2bbb8c5d993ed933fa1b93f2b3fd7c1ac Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 29 Oct 2025 02:41:47 +0800 Subject: [PATCH 35/38] misc: updated statement timeout --- ...20251028160921_delete-no-org-identities.ts | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts index bf4692cf0..c38b62380 100644 --- a/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts +++ b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts @@ -2,14 +2,24 @@ import { Knex } from "knex"; import { TableName } from "../schemas"; +const MIGRATION_TIMEOUT = 30 * 60 * 1000; // 30 minutes + export async function up(knex: Knex): Promise { + const result = await knex.raw("SHOW statement_timeout"); + const originalTimeout = result.rows[0].statement_timeout; + await knex.transaction(async (tx) => { - const hasIdentityOrgCol = await tx.schema.hasColumn(TableName.Identity, "orgId"); - if (hasIdentityOrgCol) { - await tx(TableName.Identity).whereNull("orgId").delete(); - await tx.schema.alterTable(TableName.Identity, (t) => { - t.uuid("orgId").notNullable().alter(); - }); + try { + await tx.raw(`SET statement_timeout = ${MIGRATION_TIMEOUT}`); + const hasIdentityOrgCol = await tx.schema.hasColumn(TableName.Identity, "orgId"); + if (hasIdentityOrgCol) { + await tx(TableName.Identity).whereNull("orgId").delete(); + await tx.schema.alterTable(TableName.Identity, (t) => { + t.uuid("orgId").notNullable().alter(); + }); + } + } finally { + await knex.raw(`SET statement_timeout = '${originalTimeout}'`); } }); } From ec9671c36c7b0f649f873882b4f2902d87552775 Mon Sep 17 00:00:00 2001 From: Sheen <65645666+sheensantoscapadngan@users.noreply.github.com> Date: Wed, 29 Oct 2025 03:06:31 +0800 Subject: [PATCH 36/38] Revert "misc: added health and ready probe endpoints" --- backend/e2e-test/vitest-environment-knex.ts | 8 +- backend/src/auto-start-migrations.ts | 10 +- backend/src/ee/services/hsm/hsm-fns.ts | 2 +- .../secret-rotation-v2-queue.ts | 300 ++++--- .../secret-scanning-v2-queue.ts | 831 +++++++++--------- backend/src/main.ts | 49 +- backend/src/server/app.ts | 91 +- backend/src/server/routes/index.ts | 108 ++- .../notification/notification-queue.ts | 30 +- .../guides/production-hardening.mdx | 46 +- 10 files changed, 646 insertions(+), 829 deletions(-) diff --git a/backend/e2e-test/vitest-environment-knex.ts b/backend/e2e-test/vitest-environment-knex.ts index 5ee84a7c7..0f84dbee2 100644 --- a/backend/e2e-test/vitest-environment-knex.ts +++ b/backend/e2e-test/vitest-environment-knex.ts @@ -8,7 +8,7 @@ import path from "path"; import { seedData1 } from "@app/db/seed-data"; import { getDatabaseCredentials, getHsmConfig, initEnvConfig } from "@app/lib/config/env"; import { initLogger } from "@app/lib/logger"; -import { main, markServerReady } from "@app/server/app"; +import { main } from "@app/server/app"; import { AuthMethod, AuthTokenType } from "@app/services/auth/auth-type"; import { mockSmtpServer } from "./mocks/smtp"; @@ -83,7 +83,7 @@ export default { await queue.initialize(); - const { server, completeServerInitialization } = await main({ + const server = await main({ db, smtp, logger, @@ -96,10 +96,6 @@ export default { envConfig: envCfg }); - await completeServerInitialization(); - - markServerReady(); - await bootstrapCheck({ db }); // @ts-expect-error type diff --git a/backend/src/auto-start-migrations.ts b/backend/src/auto-start-migrations.ts index 28f66e20e..88f6dea69 100644 --- a/backend/src/auto-start-migrations.ts +++ b/backend/src/auto-start-migrations.ts @@ -12,7 +12,6 @@ type TArgs = { auditLogDb?: Knex; applicationDb: Knex; logger: Logger; - onMigrationLockAcquired?: () => void; }; const isProduction = process.env.NODE_ENV === "production"; @@ -31,7 +30,7 @@ const migrationStatusCheckErrorHandler = (err: Error) => { throw err; }; -export const runMigrations = async ({ applicationDb, auditLogDb, logger, onMigrationLockAcquired }: TArgs) => { +export const runMigrations = async ({ applicationDb, auditLogDb, logger }: TArgs) => { try { // akhilmhdh(Feb 10 2025): 2 years from now remove this if (isProduction) { @@ -86,13 +85,6 @@ export const runMigrations = async ({ applicationDb, auditLogDb, logger, onMigra await applicationDb.transaction(async (tx) => { await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.BootUpMigration]); - - // Signal that this container is running migrations so that it can be marked as healthy/alive - // This is to prevent the container from being killed by the orchestrator - if (onMigrationLockAcquired) { - onMigrationLockAcquired(); - } - logger.info("Running application migrations."); const didPreviousInstanceRunMigration = !(await applicationDb.migrate diff --git a/backend/src/ee/services/hsm/hsm-fns.ts b/backend/src/ee/services/hsm/hsm-fns.ts index d37766f71..400fa31e9 100644 --- a/backend/src/ee/services/hsm/hsm-fns.ts +++ b/backend/src/ee/services/hsm/hsm-fns.ts @@ -84,7 +84,7 @@ export const isHsmActiveAndEnabled = async ({ rootKmsConfigEncryptionStrategy = (rootKmsConfig?.encryptionStrategy || null) as RootKeyEncryptionStrategy | null; if ( - (rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.HSM || isHsmConfigured) && + rootKmsConfigEncryptionStrategy === RootKeyEncryptionStrategy.HSM && licenseService && !licenseService.onPremFeatures.hsm ) { diff --git a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts index 829c17e7b..f653802b6 100644 --- a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts +++ b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-queue.ts @@ -42,172 +42,168 @@ export const secretRotationV2QueueServiceFactory = async ({ smtpService, notificationService }: TSecretRotationV2QueueServiceFactoryDep) => { - const init = async () => { - const appCfg = getConfig(); + const appCfg = getConfig(); - if (appCfg.isRotationDevelopmentMode) { - logger.warn("Secret Rotation V2 is in development mode."); - } + if (appCfg.isRotationDevelopmentMode) { + logger.warn("Secret Rotation V2 is in development mode."); + } - await queueService.startPg( - QueueJobs.SecretRotationV2QueueRotations, - async () => { - try { - const rotateBy = getNextUtcRotationInterval(); + await queueService.startPg( + QueueJobs.SecretRotationV2QueueRotations, + async () => { + try { + const rotateBy = getNextUtcRotationInterval(); - const currentTime = new Date(); + const currentTime = new Date(); - const secretRotations = await secretRotationV2DAL.findSecretRotationsToQueue(rotateBy); + const secretRotations = await secretRotationV2DAL.findSecretRotationsToQueue(rotateBy); + logger.info( + `secretRotationV2Queue: Queue Rotations [currentTime=${currentTime.toISOString()}] [rotateBy=${rotateBy.toISOString()}] [count=${ + secretRotations.length + }]` + ); + + for await (const rotation of secretRotations) { logger.info( - `secretRotationV2Queue: Queue Rotations [currentTime=${currentTime.toISOString()}] [rotateBy=${rotateBy.toISOString()}] [count=${ - secretRotations.length - }]` + `secretRotationV2Queue: Queue Rotation [rotationId=${rotation.id}] [lastRotatedAt=${new Date( + rotation.lastRotatedAt + ).toISOString()}] [rotateAt=${new Date(rotation.nextRotationAt!).toISOString()}]` ); - for await (const rotation of secretRotations) { - logger.info( - `secretRotationV2Queue: Queue Rotation [rotationId=${rotation.id}] [lastRotatedAt=${new Date( - rotation.lastRotatedAt - ).toISOString()}] [rotateAt=${new Date(rotation.nextRotationAt!).toISOString()}]` + const data = { + rotationId: rotation.id, + queuedAt: currentTime + } as TSecretRotationRotateSecretsJobPayload; + + if (appCfg.isTestMode) { + logger.warn("secretRotationV2Queue: Manually rotating secrets for test mode"); + await rotateSecretsFns({ + job: { + id: uuidv4(), + data, + retryCount: 0, + retryLimit: 0 + }, + secretRotationV2DAL, + secretRotationV2Service + }); + } else { + await queueService.queuePg( + QueueJobs.SecretRotationV2RotateSecrets, + { + rotationId: rotation.id, + queuedAt: currentTime + }, + getSecretRotationRotateSecretJobOptions(rotation) ); - - const data = { - rotationId: rotation.id, - queuedAt: currentTime - } as TSecretRotationRotateSecretsJobPayload; - - if (appCfg.isTestMode) { - logger.warn("secretRotationV2Queue: Manually rotating secrets for test mode"); - await rotateSecretsFns({ - job: { - id: uuidv4(), - data, - retryCount: 0, - retryLimit: 0 - }, - secretRotationV2DAL, - secretRotationV2Service - }); - } else { - await queueService.queuePg( - QueueJobs.SecretRotationV2RotateSecrets, - { - rotationId: rotation.id, - queuedAt: currentTime - }, - getSecretRotationRotateSecretJobOptions(rotation) - ); - } } - } catch (error) { - logger.error(error, "secretRotationV2Queue: Queue Rotations Error:"); - throw error; } - }, - { - batchSize: 1, - workerCount: 1, - pollingIntervalSeconds: appCfg.isRotationDevelopmentMode ? 0.5 : 30 + } catch (error) { + logger.error(error, "secretRotationV2Queue: Queue Rotations Error:"); + throw error; } - ); + }, + { + batchSize: 1, + workerCount: 1, + pollingIntervalSeconds: appCfg.isRotationDevelopmentMode ? 0.5 : 30 + } + ); - await queueService.startPg( - QueueJobs.SecretRotationV2RotateSecrets, - async ([job]) => { - await rotateSecretsFns({ - job: { - ...job, - data: job.data as TSecretRotationRotateSecretsJobPayload - }, - secretRotationV2DAL, - secretRotationV2Service + await queueService.startPg( + QueueJobs.SecretRotationV2RotateSecrets, + async ([job]) => { + await rotateSecretsFns({ + job: { + ...job, + data: job.data as TSecretRotationRotateSecretsJobPayload + }, + secretRotationV2DAL, + secretRotationV2Service + }); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 0.5 + } + ); + + await queueService.startPg( + QueueJobs.SecretRotationV2SendNotification, + async ([job]) => { + const { secretRotation } = job.data as TSecretRotationSendNotificationJobPayload; + try { + const { + name: rotationName, + type, + projectId, + lastRotationAttemptedAt, + folder, + environment, + id: rotationId + } = secretRotation; + + logger.info(`secretRotationV2Queue: Sending Status Notification [rotationId=${rotationId}]`); + + const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); + const project = await projectDAL.findById(projectId); + + const projectAdmins = projectMembers.filter((member) => + member.roles.some((role) => role.role === ProjectMembershipRole.Admin) + ); + + const rotationType = SECRET_ROTATION_NAME_MAP[type as SecretRotation]; + + const rotationPath = `/projects/secret-management/${projectId}/secrets/${environment.slug}`; + + await notificationService.createUserNotifications( + projectAdmins.map((admin) => ({ + userId: admin.userId, + orgId: project.orgId, + type: NotificationType.SECRET_ROTATION_FAILED, + title: "Secret Rotation Failed", + body: `Your **${rotationType}** rotation **${rotationName}** failed to rotate.`, + link: rotationPath + })) + ); + + await smtpService.sendMail({ + recipients: projectAdmins.map((member) => member.user.email!).filter(Boolean), + template: SmtpTemplates.SecretRotationFailed, + subjectLine: `Secret Rotation Failed`, + substitutions: { + rotationName, + rotationType, + content: `Your ${rotationType} Rotation failed to rotate during it's scheduled rotation. The last rotation attempt occurred at ${new Date( + lastRotationAttemptedAt + ).toISOString()}. Please check the rotation status in Infisical for more details.`, + secretPath: folder.path, + environment: environment.name, + projectName: project.name, + rotationUrl: encodeURI(`${appCfg.SITE_URL}${rotationPath}`) + } }); - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 0.5 + } catch (error) { + logger.error( + error, + `secretRotationV2Queue: Failed to Send Status Notification [rotationId=${secretRotation.id}]` + ); + throw error; } - ); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); - await queueService.startPg( - QueueJobs.SecretRotationV2SendNotification, - async ([job]) => { - const { secretRotation } = job.data as TSecretRotationSendNotificationJobPayload; - try { - const { - name: rotationName, - type, - projectId, - lastRotationAttemptedAt, - folder, - environment, - id: rotationId - } = secretRotation; - - logger.info(`secretRotationV2Queue: Sending Status Notification [rotationId=${rotationId}]`); - - const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); - const project = await projectDAL.findById(projectId); - - const projectAdmins = projectMembers.filter((member) => - member.roles.some((role) => role.role === ProjectMembershipRole.Admin) - ); - - const rotationType = SECRET_ROTATION_NAME_MAP[type as SecretRotation]; - - const rotationPath = `/projects/secret-management/${projectId}/secrets/${environment.slug}`; - - await notificationService.createUserNotifications( - projectAdmins.map((admin) => ({ - userId: admin.userId, - orgId: project.orgId, - type: NotificationType.SECRET_ROTATION_FAILED, - title: "Secret Rotation Failed", - body: `Your **${rotationType}** rotation **${rotationName}** failed to rotate.`, - link: rotationPath - })) - ); - - await smtpService.sendMail({ - recipients: projectAdmins.map((member) => member.user.email!).filter(Boolean), - template: SmtpTemplates.SecretRotationFailed, - subjectLine: `Secret Rotation Failed`, - substitutions: { - rotationName, - rotationType, - content: `Your ${rotationType} Rotation failed to rotate during it's scheduled rotation. The last rotation attempt occurred at ${new Date( - lastRotationAttemptedAt - ).toISOString()}. Please check the rotation status in Infisical for more details.`, - secretPath: folder.path, - environment: environment.name, - projectName: project.name, - rotationUrl: encodeURI(`${appCfg.SITE_URL}${rotationPath}`) - } - }); - } catch (error) { - logger.error( - error, - `secretRotationV2Queue: Failed to Send Status Notification [rotationId=${secretRotation.id}]` - ); - throw error; - } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); - - await queueService.schedulePg( - QueueJobs.SecretRotationV2QueueRotations, - appCfg.isRotationDevelopmentMode ? "* * * * *" : "0 0 * * *", - undefined, - { tz: "UTC" } - ); - }; - - return { init }; + await queueService.schedulePg( + QueueJobs.SecretRotationV2QueueRotations, + appCfg.isRotationDevelopmentMode ? "* * * * *" : "0 0 * * *", + undefined, + { tz: "UTC" } + ); }; diff --git a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts index 4830196f6..406c25e03 100644 --- a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts +++ b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-queue.ts @@ -141,6 +141,202 @@ export const secretScanningV2QueueServiceFactory = async ({ } }; + await queueService.startPg( + QueueJobs.SecretScanningV2FullScan, + async ([job]) => { + const { scanId, resourceId, dataSourceId } = job.data as TQueueSecretScanningDataSourceFullScan; + const { retryCount, retryLimit } = job; + + const logDetails = `[scanId=${scanId}] [resourceId=${resourceId}] [dataSourceId=${dataSourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; + + const tempFolder = await createTempFolder(); + + const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); + + if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); + + const resource = await secretScanningV2DAL.resources.findById(resourceId); + + if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); + + let lock: Awaited> | undefined; + + try { + try { + lock = await keyStore.acquireLock( + [KeyStorePrefixes.SecretScanningLock(dataSource.id, resource.externalId)], + 60 * 1000 * 5 + ); + } catch (e) { + throw new Error("Failed to acquire scanning lock."); + } + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Scanning + } + ); + + let connection: TAppConnection | null = null; + if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); + + const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ + kmsService, + appConnectionDAL + }); + + const findingsPath = join(tempFolder, "findings.json"); + + const scanPath = await factory.getFullScanPath({ + dataSource: { + ...dataSource, + connection + } as TSecretScanningDataSourceWithConnection, + resourceName: resource.name, + tempFolder + }); + + const config = await secretScanningV2DAL.configs.findOne({ + projectId: dataSource.projectId + }); + + let configPath: string | undefined; + + if (config && config.content) { + configPath = join(tempFolder, "infisical-scan.toml"); + await writeTextToFile(configPath, config.content); + } + + let findingsPayload: TFindingsPayload; + switch (resource.type) { + case SecretScanningResource.Repository: + case SecretScanningResource.Project: + findingsPayload = await scanGitRepositoryAndGetFindings(scanPath, findingsPath, configPath); + break; + default: + throw new Error("Unhandled resource type"); + } + + const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { + let findings: TSecretScanningFindings[] = []; + if (findingsPayload.length) { + findings = await secretScanningV2DAL.findings.upsert( + findingsPayload.map((finding) => ({ + ...finding, + projectId: dataSource.projectId, + dataSourceName: dataSource.name, + dataSourceType: dataSource.type, + resourceName: resource.name, + resourceType: resource.type, + scanId + })), + ["projectId", "fingerprint"], + tx, + ["resourceName", "dataSourceName"] + ); + } + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Completed, + statusMessage: null + } + ); + + return findings; + }); + + const newFindings = allFindings.filter((finding) => finding.scanId === scanId); + + if (newFindings.length) { + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Completed, + resourceName: resource.name, + isDiffScan: false, + dataSource, + numberOfSecrets: newFindings.length, + scanId + }); + } + + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId: resource.id, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Completed, + scanType: SecretScanningScanType.FullScan, + numberOfSecretsDetected: findingsPayload.length + } + } + }); + + logger.info(`secretScanningV2Queue: Full Scan Complete ${logDetails} findings=[${findingsPayload.length}]`); + } catch (error) { + if (retryCount === retryLimit) { + const errorMessage = parseScanErrorMessage(error); + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Failed, + statusMessage: errorMessage + } + ); + + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Failed, + resourceName: resource.name, + dataSource, + errorMessage + }); + + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId: resource.id, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Failed, + scanType: SecretScanningScanType.FullScan + } + } + }); + } + + logger.error(error, `secretScanningV2Queue: Full Scan Failed ${logDetails}`); + throw error; + } finally { + await deleteTempFolder(tempFolder); + await lock?.release(); + } + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); + const queueResourceDiffScan = async ({ payload, dataSourceId, @@ -195,126 +391,147 @@ export const secretScanningV2QueueServiceFactory = async ({ } }; - const init = async () => { - await queueService.startPg( - QueueJobs.SecretScanningV2FullScan, - async ([job]) => { - const { scanId, resourceId, dataSourceId } = job.data as TQueueSecretScanningDataSourceFullScan; - const { retryCount, retryLimit } = job; + await queueService.startPg( + QueueJobs.SecretScanningV2DiffScan, + async ([job]) => { + const { payload, dataSourceId, resourceId, scanId } = job.data as TQueueSecretScanningResourceDiffScan; + const { retryCount, retryLimit } = job; - const logDetails = `[scanId=${scanId}] [resourceId=${resourceId}] [dataSourceId=${dataSourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; + const logDetails = `[dataSourceId=${dataSourceId}] [scanId=${scanId}] [resourceId=${resourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; - const tempFolder = await createTempFolder(); + const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); - const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); + if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); - if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); + const resource = await secretScanningV2DAL.resources.findById(resourceId); - const resource = await secretScanningV2DAL.resources.findById(resourceId); + if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); - if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); + const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ + kmsService, + appConnectionDAL + }); - let lock: Awaited> | undefined; + const tempFolder = await createTempFolder(); - try { - try { - lock = await keyStore.acquireLock( - [KeyStorePrefixes.SecretScanningLock(dataSource.id, resource.externalId)], - 60 * 1000 * 5 + try { + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Scanning + } + ); + + let connection: TAppConnection | null = null; + if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); + + const config = await secretScanningV2DAL.configs.findOne({ + projectId: dataSource.projectId + }); + + let configPath: string | undefined; + + if (config && config.content) { + configPath = join(tempFolder, "infisical-scan.toml"); + await writeTextToFile(configPath, config.content); + } + + const findingsPayload = await factory.getDiffScanFindingsPayload({ + dataSource: { + ...dataSource, + connection + } as TSecretScanningDataSourceWithConnection, + resourceName: resource.name, + payload, + configPath + }); + + const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { + let findings: TSecretScanningFindings[] = []; + + if (findingsPayload.length) { + findings = await secretScanningV2DAL.findings.upsert( + findingsPayload.map((finding) => ({ + ...finding, + projectId: dataSource.projectId, + dataSourceName: dataSource.name, + dataSourceType: dataSource.type, + resourceName: resource.name, + resourceType: resource.type, + scanId + })), + ["projectId", "fingerprint"], + tx, + ["resourceName", "dataSourceName"] ); - } catch (e) { - throw new Error("Failed to acquire scanning lock."); } await secretScanningV2DAL.scans.update( { id: scanId }, { - status: SecretScanningScanStatus.Scanning + status: SecretScanningScanStatus.Completed } ); - let connection: TAppConnection | null = null; - if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); + return findings; + }); - const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ - kmsService, - appConnectionDAL - }); + const newFindings = allFindings.filter((finding) => finding.scanId === scanId); - const findingsPath = join(tempFolder, "findings.json"); - - const scanPath = await factory.getFullScanPath({ - dataSource: { - ...dataSource, - connection - } as TSecretScanningDataSourceWithConnection, + if (newFindings.length) { + const finding = newFindings[0] as TSecretScanningFinding; + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Completed, resourceName: resource.name, - tempFolder + isDiffScan: true, + dataSource, + numberOfSecrets: newFindings.length, + scanId, + authorName: finding?.details?.author, + authorEmail: finding?.details?.email }); + } - const config = await secretScanningV2DAL.configs.findOne({ - projectId: dataSource.projectId - }); - - let configPath: string | undefined; - - if (config && config.content) { - configPath = join(tempFolder, "infisical-scan.toml"); - await writeTextToFile(configPath, config.content); - } - - let findingsPayload: TFindingsPayload; - switch (resource.type) { - case SecretScanningResource.Repository: - case SecretScanningResource.Project: - findingsPayload = await scanGitRepositoryAndGetFindings(scanPath, findingsPath, configPath); - break; - default: - throw new Error("Unhandled resource type"); - } - - const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { - let findings: TSecretScanningFindings[] = []; - if (findingsPayload.length) { - findings = await secretScanningV2DAL.findings.upsert( - findingsPayload.map((finding) => ({ - ...finding, - projectId: dataSource.projectId, - dataSourceName: dataSource.name, - dataSourceType: dataSource.type, - resourceName: resource.name, - resourceType: resource.type, - scanId - })), - ["projectId", "fingerprint"], - tx, - ["resourceName", "dataSourceName"] - ); + await auditLogService.createAuditLog({ + projectId: dataSource.projectId, + actor: { + type: ActorType.PLATFORM, + metadata: {} + }, + event: { + type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, + metadata: { + dataSourceId: dataSource.id, + dataSourceType: dataSource.type, + resourceId, + resourceType: resource.type, + scanId, + scanStatus: SecretScanningScanStatus.Completed, + scanType: SecretScanningScanType.DiffScan, + numberOfSecretsDetected: findingsPayload.length } - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Completed, - statusMessage: null - } - ); - - return findings; - }); - - const newFindings = allFindings.filter((finding) => finding.scanId === scanId); - - if (newFindings.length) { - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Completed, - resourceName: resource.name, - isDiffScan: false, - dataSource, - numberOfSecrets: newFindings.length, - scanId - }); } + }); + + logger.info(`secretScanningV2Queue: Diff Scan Complete ${logDetails}`); + } catch (error) { + if (retryCount === retryLimit) { + const errorMessage = parseScanErrorMessage(error); + + await secretScanningV2DAL.scans.update( + { id: scanId }, + { + status: SecretScanningScanStatus.Failed, + statusMessage: errorMessage + } + ); + + await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { + status: SecretScanningScanStatus.Failed, + resourceName: resource.name, + dataSource, + errorMessage + }); await auditLogService.createAuditLog({ projectId: dataSource.projectId, @@ -330,348 +547,128 @@ export const secretScanningV2QueueServiceFactory = async ({ resourceId: resource.id, resourceType: resource.type, scanId, - scanStatus: SecretScanningScanStatus.Completed, - scanType: SecretScanningScanType.FullScan, - numberOfSecretsDetected: findingsPayload.length + scanStatus: SecretScanningScanStatus.Failed, + scanType: SecretScanningScanType.DiffScan } } }); - - logger.info(`secretScanningV2Queue: Full Scan Complete ${logDetails} findings=[${findingsPayload.length}]`); - } catch (error) { - if (retryCount === retryLimit) { - const errorMessage = parseScanErrorMessage(error); - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Failed, - statusMessage: errorMessage - } - ); - - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Failed, - resourceName: resource.name, - dataSource, - errorMessage - }); - - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId: resource.id, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Failed, - scanType: SecretScanningScanType.FullScan - } - } - }); - } - - logger.error(error, `secretScanningV2Queue: Full Scan Failed ${logDetails}`); - throw error; - } finally { - await deleteTempFolder(tempFolder); - await lock?.release(); } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 + + logger.error(error, `secretScanningV2Queue: Diff Scan Failed ${logDetails}`); + throw error; + } finally { + await deleteTempFolder(tempFolder); } - ); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); - await queueService.startPg( - QueueJobs.SecretScanningV2DiffScan, - async ([job]) => { - const { payload, dataSourceId, resourceId, scanId } = job.data as TQueueSecretScanningResourceDiffScan; - const { retryCount, retryLimit } = job; + await queueService.startPg( + QueueJobs.SecretScanningV2SendNotification, + async ([job]) => { + const { dataSource, resourceName, ...payload } = job.data as TQueueSecretScanningSendNotification; - const logDetails = `[dataSourceId=${dataSourceId}] [scanId=${scanId}] [resourceId=${resourceId}] [jobId=${job.id}] retryCount=[${retryCount}/${retryLimit}]`; + const appCfg = getConfig(); - const dataSource = await secretScanningV2DAL.dataSources.findById(dataSourceId); + if (!appCfg.isSmtpConfigured) return; - if (!dataSource) throw new Error(`Data source with ID "${dataSourceId}" not found`); + try { + const { projectId } = dataSource; - const resource = await secretScanningV2DAL.resources.findById(resourceId); + logger.info( + `secretScanningV2Queue: Sending Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` + ); - if (!resource) throw new Error(`Resource with ID "${resourceId}" not found`); + const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); + const project = await projectDAL.findById(projectId); - const factory = SECRET_SCANNING_FACTORY_MAP[dataSource.type as SecretScanningDataSource]({ - kmsService, - appConnectionDAL + const recipients = projectMembers.filter((member) => { + const isAdmin = member.roles.some((role) => role.role === ProjectMembershipRole.Admin); + const isCompleted = payload.status === SecretScanningScanStatus.Completed; + // We assume that the committer is one of the project members + const isCommitter = isCompleted && payload.authorEmail === member.user.email; + return isAdmin || isCommitter; }); - const tempFolder = await createTempFolder(); + const timestamp = new Date().toISOString(); - try { - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Scanning - } - ); + const subjectLine = + payload.status === SecretScanningScanStatus.Completed + ? "Incident Alert: Secret(s) Leaked" + : `Secret Scanning Failed`; - let connection: TAppConnection | null = null; - if (dataSource.connection) connection = await decryptAppConnection(dataSource.connection, kmsService); + await notificationService.createUserNotifications( + recipients.map((member) => ({ + userId: member.userId, + orgId: project.orgId, + type: + payload.status === SecretScanningScanStatus.Completed + ? NotificationType.SECRET_SCANNING_SECRETS_DETECTED + : NotificationType.SECRET_SCANNING_SCAN_FAILED, + title: subjectLine, + body: + payload.status === SecretScanningScanStatus.Completed + ? `Uncovered **${payload.numberOfSecrets}** secret(s) ${payload.isDiffScan ? " from a recent commit to" : " in"} **${resourceName}**.` + : `Encountered an error while attempting to scan the resource **${resourceName}**: ${payload.errorMessage}`, + link: + payload.status === SecretScanningScanStatus.Completed + ? `/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` + : `/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` + })) + ); - const config = await secretScanningV2DAL.configs.findOne({ - projectId: dataSource.projectId - }); - - let configPath: string | undefined; - - if (config && config.content) { - configPath = join(tempFolder, "infisical-scan.toml"); - await writeTextToFile(configPath, config.content); - } - - const findingsPayload = await factory.getDiffScanFindingsPayload({ - dataSource: { - ...dataSource, - connection - } as TSecretScanningDataSourceWithConnection, - resourceName: resource.name, - payload, - configPath - }); - - const allFindings = await secretScanningV2DAL.findings.transaction(async (tx) => { - let findings: TSecretScanningFindings[] = []; - - if (findingsPayload.length) { - findings = await secretScanningV2DAL.findings.upsert( - findingsPayload.map((finding) => ({ - ...finding, - projectId: dataSource.projectId, - dataSourceName: dataSource.name, - dataSourceType: dataSource.type, - resourceName: resource.name, - resourceType: resource.type, - scanId - })), - ["projectId", "fingerprint"], - tx, - ["resourceName", "dataSourceName"] - ); - } - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Completed - } - ); - - return findings; - }); - - const newFindings = allFindings.filter((finding) => finding.scanId === scanId); - - if (newFindings.length) { - const finding = newFindings[0] as TSecretScanningFinding; - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Completed, - resourceName: resource.name, - isDiffScan: true, - dataSource, - numberOfSecrets: newFindings.length, - scanId, - authorName: finding?.details?.author, - authorEmail: finding?.details?.email - }); - } - - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Completed, - scanType: SecretScanningScanType.DiffScan, - numberOfSecretsDetected: findingsPayload.length - } - } - }); - - logger.info(`secretScanningV2Queue: Diff Scan Complete ${logDetails}`); - } catch (error) { - if (retryCount === retryLimit) { - const errorMessage = parseScanErrorMessage(error); - - await secretScanningV2DAL.scans.update( - { id: scanId }, - { - status: SecretScanningScanStatus.Failed, - statusMessage: errorMessage - } - ); - - await queueService.queuePg(QueueJobs.SecretScanningV2SendNotification, { - status: SecretScanningScanStatus.Failed, - resourceName: resource.name, - dataSource, - errorMessage - }); - - await auditLogService.createAuditLog({ - projectId: dataSource.projectId, - actor: { - type: ActorType.PLATFORM, - metadata: {} - }, - event: { - type: EventType.SECRET_SCANNING_DATA_SOURCE_SCAN, - metadata: { - dataSourceId: dataSource.id, - dataSourceType: dataSource.type, - resourceId: resource.id, - resourceType: resource.type, - scanId, - scanStatus: SecretScanningScanStatus.Failed, - scanType: SecretScanningScanType.DiffScan - } - } - }); - } - - logger.error(error, `secretScanningV2Queue: Diff Scan Failed ${logDetails}`); - throw error; - } finally { - await deleteTempFolder(tempFolder); - } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); - - await queueService.startPg( - QueueJobs.SecretScanningV2SendNotification, - async ([job]) => { - const { dataSource, resourceName, ...payload } = job.data as TQueueSecretScanningSendNotification; - - const appCfg = getConfig(); - - if (!appCfg.isSmtpConfigured) return; - - try { - const { projectId } = dataSource; - - logger.info( - `secretScanningV2Queue: Sending Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` - ); - - const projectMembers = await projectMembershipDAL.findAllProjectMembers(projectId); - const project = await projectDAL.findById(projectId); - - const recipients = projectMembers.filter((member) => { - const isAdmin = member.roles.some((role) => role.role === ProjectMembershipRole.Admin); - const isCompleted = payload.status === SecretScanningScanStatus.Completed; - // We assume that the committer is one of the project members - const isCommitter = isCompleted && payload.authorEmail === member.user.email; - return isAdmin || isCommitter; - }); - - const timestamp = new Date().toISOString(); - - const subjectLine = + await smtpService.sendMail({ + recipients: recipients.map((member) => member.user.email!).filter(Boolean), + template: payload.status === SecretScanningScanStatus.Completed - ? "Incident Alert: Secret(s) Leaked" - : `Secret Scanning Failed`; - - await notificationService.createUserNotifications( - recipients.map((member) => ({ - userId: member.userId, - orgId: project.orgId, - type: - payload.status === SecretScanningScanStatus.Completed - ? NotificationType.SECRET_SCANNING_SECRETS_DETECTED - : NotificationType.SECRET_SCANNING_SCAN_FAILED, - title: subjectLine, - body: - payload.status === SecretScanningScanStatus.Completed - ? `Uncovered **${payload.numberOfSecrets}** secret(s) ${payload.isDiffScan ? " from a recent commit to" : " in"} **${resourceName}**.` - : `Encountered an error while attempting to scan the resource **${resourceName}**: ${payload.errorMessage}`, - link: - payload.status === SecretScanningScanStatus.Completed - ? `/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` - : `/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` - })) - ); - - await smtpService.sendMail({ - recipients: recipients.map((member) => member.user.email!).filter(Boolean), - template: - payload.status === SecretScanningScanStatus.Completed - ? SmtpTemplates.SecretScanningV2SecretsDetected - : SmtpTemplates.SecretScanningV2ScanFailed, - subjectLine, - substitutions: - payload.status === SecretScanningScanStatus.Completed - ? { - authorName: payload.authorName, - authorEmail: payload.authorEmail, - resourceName, - numberOfSecrets: payload.numberOfSecrets, - isDiffScan: payload.isDiffScan, - url: encodeURI( - `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` - ), - timestamp - } - : { - dataSourceName: dataSource.name, - resourceName, - projectName: project.name, - timestamp, - errorMessage: payload.errorMessage, - url: encodeURI( - `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` - ) - } - }); - } catch (error) { - logger.error( - error, - `secretScanningV2Queue: Failed to Send Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` - ); - throw error; - } - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 + ? SmtpTemplates.SecretScanningV2SecretsDetected + : SmtpTemplates.SecretScanningV2ScanFailed, + subjectLine, + substitutions: + payload.status === SecretScanningScanStatus.Completed + ? { + authorName: payload.authorName, + authorEmail: payload.authorEmail, + resourceName, + numberOfSecrets: payload.numberOfSecrets, + isDiffScan: payload.isDiffScan, + url: encodeURI( + `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/findings?search=scanId:${payload.scanId}` + ), + timestamp + } + : { + dataSourceName: dataSource.name, + resourceName, + projectName: project.name, + timestamp, + errorMessage: payload.errorMessage, + url: encodeURI( + `${appCfg.SITE_URL}/projects/secret-scanning/${projectId}/data-sources/${dataSource.type}/${dataSource.id}` + ) + } + }); + } catch (error) { + logger.error( + error, + `secretScanningV2Queue: Failed to Send Status Notification [dataSourceId=${dataSource.id}] [resourceName=${resourceName}] [status=${payload.status}]` + ); + throw error; } - ); - }; + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); return { queueDataSourceFullScan, - queueResourceDiffScan, - init + queueResourceDiffScan }; }; diff --git a/backend/src/main.ts b/backend/src/main.ts index d36d706ba..400804804 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -16,7 +16,7 @@ import { buildRedisFromConfig } from "./lib/config/redis"; import { removeTemporaryBaseDirectory } from "./lib/files"; import { initLogger } from "./lib/logger"; import { queueServiceFactory } from "./queue"; -import { main, markRunningMigrations, markServerReady } from "./server/app"; +import { main } from "./server/app"; import { bootstrapCheck } from "./server/boot-strap-check"; import { kmsRootConfigDALFactory } from "./services/kms/kms-root-config-dal"; import { smtpServiceFactory } from "./services/smtp/smtp-service"; @@ -59,6 +59,8 @@ const run = async () => { }) : undefined; + await runMigrations({ applicationDb: db, auditLogDb, logger }); + const smtp = smtpServiceFactory(formatSmtpConfig()); const queue = queueServiceFactory(envConfig, { @@ -72,7 +74,7 @@ const run = async () => { const keyStore = keyStoreFactory(envConfig, keyValueStoreDAL); const redis = buildRedisFromConfig(envConfig); - const { server, completeServerInitialization } = await main({ + const server = await main({ db, auditLogDb, superAdminDAL, @@ -85,6 +87,7 @@ const run = async () => { redis, envConfig }); + const bootstrap = await bootstrapCheck({ db }); // eslint-disable-next-line process.on("SIGINT", async () => { @@ -118,46 +121,12 @@ const run = async () => { await server.listen({ port: envConfig.PORT, - host: envConfig.HOST - }); - - logger.info(`Server listening on ${envConfig.HOST}:${envConfig.PORT}`); - logger.info("Running migrations..."); - - // Run migrations while server is up - // All containers start as NOT HEALTHY (waiting for migrations) - // Container that acquires lock: becomes HEALTHY (running migrations) + NOT READY (no traffic) - // Other containers waiting: stay NOT HEALTHY (waiting) + NOT READY (no traffic) - await runMigrations({ - applicationDb: db, - auditLogDb, - logger, - onMigrationLockAcquired: () => { - // Called after successfully acquiring the lock - // This container is now the migration runner - markRunningMigrations(); - logger.info("Migration lock acquired! This container is running migrations."); + host: envConfig.HOST, + listenTextResolver: (address) => { + void bootstrap(); + return address; } }); - - logger.info("Migrations complete. Completing server initialization..."); - - try { - await completeServerInitialization(); - } catch (error) { - logger.error(error, "Failed to complete server initialization"); - await server.close(); - await queue.shutdown(); - process.exit(1); - } - - logger.info("Server initialization complete. Marking server as READY..."); - - markServerReady(); - - logger.info("Server is ready to accept traffic"); - const bootstrap = await bootstrapCheck({ db }); - void bootstrap(); }; void run(); diff --git a/backend/src/server/app.ts b/backend/src/server/app.ts index 17a9feb2a..f1176b932 100644 --- a/backend/src/server/app.ts +++ b/backend/src/server/app.ts @@ -1,6 +1,5 @@ /* eslint-disable import/extensions */ import path from "node:path"; -import { monitorEventLoopDelay } from "perf_hooks"; import type { FastifyCookieOptions } from "@fastify/cookie"; import cookie from "@fastify/cookie"; @@ -25,7 +24,6 @@ import { TQueueServiceFactory } from "@app/queue"; import { TKmsRootConfigDALFactory } from "@app/services/kms/kms-root-config-dal"; import { TSmtpService } from "@app/services/smtp/smtp-service"; import { TSuperAdminDALFactory } from "@app/services/super-admin/super-admin-dal"; -import { getServerCfg } from "@app/services/super-admin/super-admin-service"; import { globalRateLimiterCfg } from "./config/rateLimiter"; import { addErrorsToResponseSchemas } from "./plugins/add-errors-to-response-schemas"; @@ -38,15 +36,6 @@ import { registerServeUI } from "./plugins/serve-ui"; import { fastifySwagger } from "./plugins/swagger"; import { registerRoutes } from "./routes"; -const histogram = monitorEventLoopDelay({ resolution: 20 }); -histogram.enable(); - -const serverState = { - isReady: false, - isRunningMigrations: false, - isWaitingForMigrations: true // Start as true - containers are unhealthy until they acquire migration lock or complete -}; - type TMain = { auditLogDb?: Knex; db: Knex; @@ -156,72 +145,7 @@ export const main = async ({ }) }); - // Health check - returns 200 only if doing useful work (running migrations or ready) - // Returns 503 if waiting for another container to finish migrations - server.get("/api/health", async (_, reply) => { - if (serverState.isWaitingForMigrations) { - return reply.code(503).send({ - status: "waiting", - message: "Waiting for migrations to complete in another container" - }); - } - return { status: "ok", message: "Server is alive" }; - }); - - // Global preHandler to block requests during migrations - server.addHook("preHandler", async (request, reply) => { - if (request.url === "/api/health" || request.url === "/api/ready") { - return; - } - if (!serverState.isReady) { - return reply.code(503).send({ - status: "unavailable", - message: "Server is starting up, migrations in progress. Please try again in a moment." - }); - } - }); - - // Readiness check - returns 503 until migrations are complete - server.get("/api/ready", async (request, reply) => { - const cfg = getConfig(); - - const meanLagMs = histogram.mean / 1e6; - const maxLagMs = histogram.max / 1e6; - const p99LagMs = histogram.percentile(99) / 1e6; - - request.log.info( - `Event loop stats - Mean: ${meanLagMs.toFixed(2)}ms, Max: ${maxLagMs.toFixed(2)}ms, p99: ${p99LagMs.toFixed(2)}ms` - ); - - request.log.info(`Raw event loop stats: ${JSON.stringify(histogram, null, 2)}`); - - if (!serverState.isReady) { - return reply.code(503).send({ - date: new Date(), - message: "Server is starting up, migrations in progress", - emailConfigured: cfg.isSmtpConfigured, - redisConfigured: cfg.isRedisConfigured, - secretScanningConfigured: cfg.isSecretScanningConfigured, - samlDefaultOrgSlug: cfg.samlDefaultOrgSlug, - auditLogStorageDisabled: Boolean(cfg.DISABLE_AUDIT_LOG_STORAGE) - }); - } - - const serverCfg = await getServerCfg(); - - return { - date: new Date(), - message: "Ok", - emailConfigured: cfg.isSmtpConfigured, - inviteOnlySignup: Boolean(serverCfg.allowSignUp), - redisConfigured: cfg.isRedisConfigured, - secretScanningConfigured: cfg.isSecretScanningConfigured, - samlDefaultOrgSlug: cfg.samlDefaultOrgSlug, - auditLogStorageDisabled: Boolean(cfg.DISABLE_AUDIT_LOG_STORAGE) - }; - }); - - const completeServerInitialization = await registerRoutes(server, { + await server.register(registerRoutes, { smtp, queue, db, @@ -240,21 +164,10 @@ export const main = async ({ await server.ready(); server.swagger(); - return { server, completeServerInitialization }; + return server; } catch (err) { server.log.error(err); await queue.shutdown(); process.exit(1); } }; - -export const markServerReady = () => { - serverState.isReady = true; - serverState.isRunningMigrations = false; - serverState.isWaitingForMigrations = false; -}; - -export const markRunningMigrations = () => { - serverState.isRunningMigrations = true; - serverState.isWaitingForMigrations = false; -}; diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 5bdb8fafc..31d860201 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2208,7 +2208,7 @@ export const registerRoutes = async ( internalCaFns }); - const secretRotationV2Queue = await secretRotationV2QueueServiceFactory({ + await secretRotationV2QueueServiceFactory({ secretRotationV2Service, secretRotationV2DAL, queueService, @@ -2305,6 +2305,8 @@ export const registerRoutes = async ( // If FIPS is enabled, we check to ensure that the users license includes FIPS mode. crypto.verifyFipsLicense(licenseService); + await superAdminService.initServerCfg(); + // Start HSM service if it's configured/enabled. await hsmService.startService(); @@ -2329,60 +2331,21 @@ export const registerRoutes = async ( } } - const completeServerInitialization = async () => { - await superAdminService.initServerCfg(); - - await telemetryQueue.startTelemetryCheck(); - await telemetryQueue.startAggregatedEventsJob(); - await dailyResourceCleanUp.init(); - await healthAlert.init(); - await pkiSyncCleanup.init(); - await pamAccountRotation.init(); - await dailyReminderQueueService.startDailyRemindersJob(); - await dailyReminderQueueService.startSecretReminderMigrationJob(); - await dailyExpiringPkiItemAlert.startSendingAlerts(); - await pkiSubscriberQueue.startDailyAutoRenewalJob(); - await certificateV3Queue.init(); - await kmsService.startService(hsmStatus); - await microsoftTeamsService.start(); - await dynamicSecretQueueService.init(); - await secretScanningV2Queue.init(); - await secretRotationV2Queue.init(); - await notificationQueue.init(); - await eventBusService.init(); - - const cronJobs: CronJob[] = []; - if (appCfg.isProductionMode) { - const rateLimitSyncJob = await rateLimitService.initializeBackgroundSync(); - if (rateLimitSyncJob) { - cronJobs.push(rateLimitSyncJob); - } - const licenseSyncJob = await licenseService.initializeBackgroundSync(); - if (licenseSyncJob) { - cronJobs.push(licenseSyncJob); - } - - const microsoftTeamsSyncJob = await microsoftTeamsService.initializeBackgroundSync(); - if (microsoftTeamsSyncJob) { - cronJobs.push(microsoftTeamsSyncJob); - } - - const adminIntegrationsSyncJob = await superAdminService.initializeAdminIntegrationConfigSync(); - if (adminIntegrationsSyncJob) { - cronJobs.push(adminIntegrationsSyncJob); - } - } - - const configSyncJob = await superAdminService.initializeEnvConfigSync(); - if (configSyncJob) { - cronJobs.push(configSyncJob); - } - - const oauthConfigSyncJob = await initializeOauthConfigSync(); - if (oauthConfigSyncJob) { - cronJobs.push(oauthConfigSyncJob); - } - }; + await telemetryQueue.startTelemetryCheck(); + await telemetryQueue.startAggregatedEventsJob(); + await dailyResourceCleanUp.init(); + await healthAlert.init(); + await pkiSyncCleanup.init(); + await pamAccountRotation.init(); + await dailyReminderQueueService.startDailyRemindersJob(); + await dailyReminderQueueService.startSecretReminderMigrationJob(); + await dailyExpiringPkiItemAlert.startSendingAlerts(); + await pkiSubscriberQueue.startDailyAutoRenewalJob(); + await certificateV3Queue.init(); + await kmsService.startService(hsmStatus); + await microsoftTeamsService.start(); + await dynamicSecretQueueService.init(); + await eventBusService.init(); // inject all services server.decorate("services", { @@ -2512,6 +2475,38 @@ export const registerRoutes = async ( convertor: convertorService }); + const cronJobs: CronJob[] = []; + if (appCfg.isProductionMode) { + const rateLimitSyncJob = await rateLimitService.initializeBackgroundSync(); + if (rateLimitSyncJob) { + cronJobs.push(rateLimitSyncJob); + } + const licenseSyncJob = await licenseService.initializeBackgroundSync(); + if (licenseSyncJob) { + cronJobs.push(licenseSyncJob); + } + + const microsoftTeamsSyncJob = await microsoftTeamsService.initializeBackgroundSync(); + if (microsoftTeamsSyncJob) { + cronJobs.push(microsoftTeamsSyncJob); + } + + const adminIntegrationsSyncJob = await superAdminService.initializeAdminIntegrationConfigSync(); + if (adminIntegrationsSyncJob) { + cronJobs.push(adminIntegrationsSyncJob); + } + } + + const configSyncJob = await superAdminService.initializeEnvConfigSync(); + if (configSyncJob) { + cronJobs.push(configSyncJob); + } + + const oauthConfigSyncJob = await initializeOauthConfigSync(); + if (oauthConfigSyncJob) { + cronJobs.push(oauthConfigSyncJob); + } + server.decorate("store", { user: userDAL, kmipClient: kmipClientDAL @@ -2600,10 +2595,9 @@ export const registerRoutes = async ( await server.register(registerV4Routes, { prefix: "/api/v4" }); server.addHook("onClose", async () => { + cronJobs.forEach((job) => job.stop()); await telemetryService.flushAll(); await eventBusService.close(); sseService.close(); }); - - return completeServerInitialization; }; diff --git a/backend/src/services/notification/notification-queue.ts b/backend/src/services/notification/notification-queue.ts index aaff8e23f..e5d89c83b 100644 --- a/backend/src/services/notification/notification-queue.ts +++ b/backend/src/services/notification/notification-queue.ts @@ -10,7 +10,6 @@ type TNotificationQueueServiceFactoryDep = { export type TNotificationQueueServiceFactory = { pushUserNotifications: (data: TCreateUserNotificationDTO[]) => Promise; - init: () => Promise; }; export const notificationQueueServiceFactory = async ({ @@ -21,23 +20,20 @@ export const notificationQueueServiceFactory = async ({ await queueService.queuePg(QueueJobs.UserNotification, { notifications: data }); }; - const init = async () => { - await queueService.startPg( - QueueJobs.UserNotification, - async ([job]) => { - const { notifications } = job.data as { notifications: TCreateUserNotificationDTO[] }; - await userNotificationDAL.batchInsert(notifications); - }, - { - batchSize: 1, - workerCount: 2, - pollingIntervalSeconds: 1 - } - ); - }; + await queueService.startPg( + QueueJobs.UserNotification, + async ([job]) => { + const { notifications } = job.data as { notifications: TCreateUserNotificationDTO[] }; + await userNotificationDAL.batchInsert(notifications); + }, + { + batchSize: 1, + workerCount: 2, + pollingIntervalSeconds: 1 + } + ); return { - pushUserNotifications, - init + pushUserNotifications }; }; diff --git a/docs/self-hosting/guides/production-hardening.mdx b/docs/self-hosting/guides/production-hardening.mdx index e8f05730c..dfd7b575f 100644 --- a/docs/self-hosting/guides/production-hardening.mdx +++ b/docs/self-hosting/guides/production-hardening.mdx @@ -137,33 +137,6 @@ Configure database read replicas for high availability PostgreSQL setups: DB_READ_REPLICAS='[{"DB_CONNECTION_URI":"postgresql://user:pass@replica:5432/db?sslmode=require"}]' ``` -### Health Check Endpoints - -Infisical provides two health check endpoints for proper container orchestration and load balancer integration: - -#### `/api/health` - Container Health Check - -Determines whether the application container should be kept alive or terminated. - -- Returns `200` if the application is running and operational -- Returns `200` even during startup tasks -- Returns `503` only if the application has crashed or is unable to start - -**Use for**: Docker health checks, Kubernetes liveness probes, ECS task health checks. - -#### `/api/ready` - Traffic Readiness Check - -Determines whether the application instance is ready to receive production traffic. - -- Returns `200` when the application is fully ready to serve requests -- Returns `503` during startup tasks (e.g., database migrations, initialization) - -**Use for**: Load balancer health checks, Kubernetes readiness probes, ALB target health checks. - -#### Why Two Endpoints? - -Using both endpoints together enables zero-downtime deployments: containers stay alive during startup tasks (`/api/health` returns `200`) while load balancers avoid sending traffic to instances that aren't ready (`/api/ready` returns `503`). This ensures existing instances continue serving traffic until new instances complete their initialization. - ### Operational Security #### User Access Management @@ -234,17 +207,14 @@ docker run --memory=1g --cpus=0.5 infisical/infisical:latest #### Health Monitoring -**Configure health checks**. Set up Docker health checks using the appropriate endpoint: +**Configure health checks**. Set up Docker health checks: ```dockerfile # In Dockerfile or docker-compose.yml -# Use /api/health for container health (keeps container alive during startup) HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ - CMD curl -f http://localhost:8080/api/health || exit 1 + CMD curl -f http://localhost:8080/api/status || exit 1 ``` -**Note**: Use `/api/health` for container health checks and `/api/ready` for load balancer readiness checks. See [Health Check Endpoints](#health-check-endpoints) for detailed information. - #### Network Security **Host firewall configuration**. Configure host-level firewall for Docker deployments: @@ -463,32 +433,26 @@ stringData: #### Health Monitoring -**Set up health checks**. Configure readiness and liveness probes using the appropriate endpoints: +**Set up health checks**. Configure readiness and liveness probes: ```yaml # Health check configuration containers: - name: infisical - # Use /api/ready for readiness (traffic routing) readinessProbe: httpGet: - path: /api/ready + path: /api/status port: 8080 initialDelaySeconds: 10 periodSeconds: 5 - failureThreshold: 3 - # Use /api/health for liveness (container restart) livenessProbe: httpGet: - path: /api/health + path: /api/status port: 8080 initialDelaySeconds: 30 periodSeconds: 10 - failureThreshold: 3 ``` -**Important**: The `readinessProbe` uses `/api/ready` to ensure traffic is only sent to pods that are fully initialized. The `livenessProbe` uses `/api/health` to keep the container alive during startup. See [Health Check Endpoints](#health-check-endpoints) for detailed information. - #### Infrastructure Considerations **Use managed databases (if possible)**. For production deployments, consider using managed PostgreSQL and Redis services instead of in-cluster instances when feasible, as they typically provide better security, backup, and maintenance capabilities. From 78510aee8ef6f851caff58c465be357646670050 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 29 Oct 2025 04:16:08 +0800 Subject: [PATCH 37/38] misc: used tx instead of knex --- .../db/migrations/20251028160921_delete-no-org-identities.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts index c38b62380..0eb0e7ae0 100644 --- a/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts +++ b/backend/src/db/migrations/20251028160921_delete-no-org-identities.ts @@ -19,7 +19,7 @@ export async function up(knex: Knex): Promise { }); } } finally { - await knex.raw(`SET statement_timeout = '${originalTimeout}'`); + await tx.raw(`SET statement_timeout = '${originalTimeout}'`); } }); } From 0d3ab1158a3466b5fc6749322beac2c358578287 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 29 Oct 2025 18:12:11 +0800 Subject: [PATCH 38/38] misc: add kmip metadata to the other kmip routes --- backend/src/ee/routes/v1/kmip-spec-router.ts | 6 ++++-- backend/src/ee/services/kmip/kmip-operation-service.ts | 3 ++- backend/src/services/kms/kms-key-dal.ts | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/src/ee/routes/v1/kmip-spec-router.ts b/backend/src/ee/routes/v1/kmip-spec-router.ts index 6fcf05d99..1e3305ac7 100644 --- a/backend/src/ee/routes/v1/kmip-spec-router.ts +++ b/backend/src/ee/routes/v1/kmip-spec-router.ts @@ -182,7 +182,8 @@ export const registerKmipSpecRouter = async (server: FastifyZodProvider) => { algorithm: z.string(), isActive: z.boolean(), createdAt: z.date(), - updatedAt: z.date() + updatedAt: z.date(), + kmipMetadata: z.record(z.any()).nullish() }) } }, @@ -384,7 +385,8 @@ export const registerKmipSpecRouter = async (server: FastifyZodProvider) => { isActive: z.boolean(), algorithm: z.string(), createdAt: z.date(), - updatedAt: z.date() + updatedAt: z.date(), + kmipMetadata: z.record(z.any()).nullish() }) .array() }) diff --git a/backend/src/ee/services/kmip/kmip-operation-service.ts b/backend/src/ee/services/kmip/kmip-operation-service.ts index b3eace6bc..3955fd0ca 100644 --- a/backend/src/ee/services/kmip/kmip-operation-service.ts +++ b/backend/src/ee/services/kmip/kmip-operation-service.ts @@ -341,7 +341,8 @@ export const kmipOperationServiceFactory = ({ algorithm: completeKeyDetails.internalKms.encryptionAlgorithm, isActive: !key.isDisabled, createdAt: key.createdAt, - updatedAt: key.updatedAt + updatedAt: key.updatedAt, + kmipMetadata: key.kmipMetadata as Record }; }; diff --git a/backend/src/services/kms/kms-key-dal.ts b/backend/src/services/kms/kms-key-dal.ts index a0dd12191..36ffa3366 100644 --- a/backend/src/services/kms/kms-key-dal.ts +++ b/backend/src/services/kms/kms-key-dal.ts @@ -112,7 +112,8 @@ export const kmskeyDALFactory = (db: TDbClient) => { ...KmsKeysSchema.parse(entry), isActive: !entry.isDisabled, algorithm: entry.internalKmsEncryptionAlgorithm, - version: entry.internalKmsVersion + version: entry.internalKmsVersion, + kmipMetadata: entry.kmipMetadata as Record })); } catch (error) { throw new DatabaseError({ error, name: "Find project cmeks" });