mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 20:27:12 +00:00
lint and fix license
This commit is contained in:
@@ -58,7 +58,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({
|
|||||||
enforceMfa: false,
|
enforceMfa: false,
|
||||||
projectTemplates: false,
|
projectTemplates: false,
|
||||||
kmip: false,
|
kmip: false,
|
||||||
gateway: true,
|
gateway: false,
|
||||||
sshHostGroups: false,
|
sshHostGroups: false,
|
||||||
secretScanning: false,
|
secretScanning: false,
|
||||||
enterpriseSecretSyncs: false,
|
enterpriseSecretSyncs: false,
|
||||||
@@ -67,7 +67,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({
|
|||||||
fips: false,
|
fips: false,
|
||||||
eventSubscriptions: false,
|
eventSubscriptions: false,
|
||||||
machineIdentityAuthTemplates: false,
|
machineIdentityAuthTemplates: false,
|
||||||
pam: true
|
pam: false
|
||||||
});
|
});
|
||||||
|
|
||||||
export const setupLicenseRequestWithStore = (
|
export const setupLicenseRequestWithStore = (
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ import { registerSecretRequestsRouter } from "./secret-requests-router";
|
|||||||
import { registerSecretSharingRouter } from "./secret-sharing-router";
|
import { registerSecretSharingRouter } from "./secret-sharing-router";
|
||||||
import { registerSecretTagRouter } from "./secret-tag-router";
|
import { registerSecretTagRouter } from "./secret-tag-router";
|
||||||
import { registerSlackRouter } from "./slack-router";
|
import { registerSlackRouter } from "./slack-router";
|
||||||
import { registerUpgradePathRouter } from "./upgrade-path-router";
|
|
||||||
import { registerSsoRouter } from "./sso-router";
|
import { registerSsoRouter } from "./sso-router";
|
||||||
|
import { registerUpgradePathRouter } from "./upgrade-path-router";
|
||||||
import { registerUserActionRouter } from "./user-action-router";
|
import { registerUserActionRouter } from "./user-action-router";
|
||||||
import { registerUserEngagementRouter } from "./user-engagement-router";
|
import { registerUserEngagementRouter } from "./user-engagement-router";
|
||||||
import { registerUserRouter } from "./user-router";
|
import { registerUserRouter } from "./user-router";
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import { CredentialDisplay } from "@app/components/secret-rotations-v2/ViewSecretRotationV2GeneratedCredentials/shared/CredentialDisplay";
|
import { CredentialDisplay } from "@app/components/secret-rotations-v2/ViewSecretRotationV2GeneratedCredentials/shared/CredentialDisplay";
|
||||||
|
import { TRedisCredentialsRotationGeneratedCredentialsResponse } from "@app/hooks/api/secretRotationsV2/types/redis-credentials-rotation";
|
||||||
|
|
||||||
import { ViewRotationGeneratedCredentialsDisplay } from "./shared";
|
import { ViewRotationGeneratedCredentialsDisplay } from "./shared";
|
||||||
import { TRedisCredentialsRotationGeneratedCredentialsResponse } from "@app/hooks/api/secretRotationsV2/types/redis-credentials-rotation";
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
generatedCredentialsResponse: TRedisCredentialsRotationGeneratedCredentialsResponse;
|
generatedCredentialsResponse: TRedisCredentialsRotationGeneratedCredentialsResponse;
|
||||||
|
|||||||
+2
-1
@@ -3,6 +3,7 @@ import { Controller, useFormContext } from "react-hook-form";
|
|||||||
import { TSecretRotationV2Form } from "@app/components/secret-rotations-v2/forms/schemas";
|
import { TSecretRotationV2Form } from "@app/components/secret-rotations-v2/forms/schemas";
|
||||||
import { FormControl, Input } from "@app/components/v2";
|
import { FormControl, Input } from "@app/components/v2";
|
||||||
import { SecretRotation } from "@app/hooks/api/secretRotationsV2";
|
import { SecretRotation } from "@app/hooks/api/secretRotationsV2";
|
||||||
|
|
||||||
import { DEFAULT_PASSWORD_REQUIREMENTS } from "../schemas/shared";
|
import { DEFAULT_PASSWORD_REQUIREMENTS } from "../schemas/shared";
|
||||||
|
|
||||||
export const RedisCredentialsRotationParametersFields = () => {
|
export const RedisCredentialsRotationParametersFields = () => {
|
||||||
@@ -18,7 +19,7 @@ export const RedisCredentialsRotationParametersFields = () => {
|
|||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
name="parameters.permissionScope"
|
name="parameters.permissionScope"
|
||||||
defaultValue={""}
|
defaultValue=""
|
||||||
render={({ field, fieldState: { error } }) => (
|
render={({ field, fieldState: { error } }) => (
|
||||||
<FormControl
|
<FormControl
|
||||||
tooltipClassName="max-w-[40rem] w-full"
|
tooltipClassName="max-w-[40rem] w-full"
|
||||||
|
|||||||
+1
-1
@@ -8,8 +8,8 @@ import { AwsIamUserSecretRotationParametersFields } from "./AwsIamUserSecretRota
|
|||||||
import { AzureClientSecretRotationParametersFields } from "./AzureClientSecretRotationParametersFields";
|
import { AzureClientSecretRotationParametersFields } from "./AzureClientSecretRotationParametersFields";
|
||||||
import { LdapPasswordRotationParametersFields } from "./LdapPasswordRotationParametersFields";
|
import { LdapPasswordRotationParametersFields } from "./LdapPasswordRotationParametersFields";
|
||||||
import { OktaClientSecretRotationParametersFields } from "./OktaClientSecretRotationParametersFields";
|
import { OktaClientSecretRotationParametersFields } from "./OktaClientSecretRotationParametersFields";
|
||||||
import { SqlCredentialsRotationParametersFields } from "./shared";
|
|
||||||
import { RedisCredentialsRotationParametersFields } from "./RedisCredentialsRotationParametersFields";
|
import { RedisCredentialsRotationParametersFields } from "./RedisCredentialsRotationParametersFields";
|
||||||
|
import { SqlCredentialsRotationParametersFields } from "./shared";
|
||||||
|
|
||||||
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
||||||
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationParametersFields,
|
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationParametersFields,
|
||||||
|
|||||||
+1
-1
@@ -11,8 +11,8 @@ import { AwsIamUserSecretRotationReviewFields } from "./AwsIamUserSecretRotation
|
|||||||
import { AzureClientSecretRotationReviewFields } from "./AzureClientSecretRotationReviewFields";
|
import { AzureClientSecretRotationReviewFields } from "./AzureClientSecretRotationReviewFields";
|
||||||
import { LdapPasswordRotationReviewFields } from "./LdapPasswordRotationReviewFields";
|
import { LdapPasswordRotationReviewFields } from "./LdapPasswordRotationReviewFields";
|
||||||
import { OktaClientSecretRotationReviewFields } from "./OktaClientSecretRotationReviewFields";
|
import { OktaClientSecretRotationReviewFields } from "./OktaClientSecretRotationReviewFields";
|
||||||
import { SqlCredentialsRotationReviewFields } from "./shared";
|
|
||||||
import { RedisCredentialsRotationReviewFields } from "./RedisCredentialsRotationReviewFields";
|
import { RedisCredentialsRotationReviewFields } from "./RedisCredentialsRotationReviewFields";
|
||||||
|
import { SqlCredentialsRotationReviewFields } from "./shared";
|
||||||
|
|
||||||
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
||||||
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationReviewFields,
|
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationReviewFields,
|
||||||
|
|||||||
+1
-1
@@ -8,8 +8,8 @@ import { AwsIamUserSecretRotationSecretsMappingFields } from "./AwsIamUserSecret
|
|||||||
import { AzureClientSecretRotationSecretsMappingFields } from "./AzureClientSecretRotationSecretsMappingFields";
|
import { AzureClientSecretRotationSecretsMappingFields } from "./AzureClientSecretRotationSecretsMappingFields";
|
||||||
import { LdapPasswordRotationSecretsMappingFields } from "./LdapPasswordRotationSecretsMappingFields";
|
import { LdapPasswordRotationSecretsMappingFields } from "./LdapPasswordRotationSecretsMappingFields";
|
||||||
import { OktaClientSecretRotationSecretsMappingFields } from "./OktaClientSecretRotationSecretsMappingFields";
|
import { OktaClientSecretRotationSecretsMappingFields } from "./OktaClientSecretRotationSecretsMappingFields";
|
||||||
import { SqlCredentialsRotationSecretsMappingFields } from "./shared";
|
|
||||||
import { RedisCredentialsRotationSecretsMappingFields } from "./RedisCredentialsRotationSecretsMappingFields";
|
import { RedisCredentialsRotationSecretsMappingFields } from "./RedisCredentialsRotationSecretsMappingFields";
|
||||||
|
import { SqlCredentialsRotationSecretsMappingFields } from "./shared";
|
||||||
|
|
||||||
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
const COMPONENT_MAP: Record<SecretRotation, React.FC> = {
|
||||||
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationSecretsMappingFields,
|
[SecretRotation.PostgresCredentials]: SqlCredentialsRotationSecretsMappingFields,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { useEffect } from "react";
|
||||||
import {
|
import {
|
||||||
faBook,
|
faBook,
|
||||||
faBoxOpen,
|
faBoxOpen,
|
||||||
@@ -11,13 +12,12 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|||||||
import { Link, Outlet } from "@tanstack/react-router";
|
import { Link, Outlet } from "@tanstack/react-router";
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
|
|
||||||
|
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
|
||||||
import { Lottie, Menu, MenuGroup, MenuItem } from "@app/components/v2";
|
import { Lottie, Menu, MenuGroup, MenuItem } from "@app/components/v2";
|
||||||
import { useProject, useProjectPermission, useSubscription } from "@app/context";
|
import { useProject, useProjectPermission, useSubscription } from "@app/context";
|
||||||
|
import { usePopUp } from "@app/hooks";
|
||||||
|
|
||||||
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
|
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
|
||||||
import { useEffect } from "react";
|
|
||||||
import { usePopUp } from "@app/hooks";
|
|
||||||
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
|
|
||||||
|
|
||||||
export const PamLayout = () => {
|
export const PamLayout = () => {
|
||||||
const { currentProject } = useProject();
|
const { currentProject } = useProject();
|
||||||
|
|||||||
+1
-1
@@ -40,6 +40,7 @@ import { OktaConnectionForm } from "./OktaConnectionForm";
|
|||||||
import { OracleDBConnectionForm } from "./OracleDBConnectionForm";
|
import { OracleDBConnectionForm } from "./OracleDBConnectionForm";
|
||||||
import { PostgresConnectionForm } from "./PostgresConnectionForm";
|
import { PostgresConnectionForm } from "./PostgresConnectionForm";
|
||||||
import { RailwayConnectionForm } from "./RailwayConnectionForm";
|
import { RailwayConnectionForm } from "./RailwayConnectionForm";
|
||||||
|
import { RedisConnectionForm } from "./RedisConnectionForm";
|
||||||
import { RenderConnectionForm } from "./RenderConnectionForm";
|
import { RenderConnectionForm } from "./RenderConnectionForm";
|
||||||
import { SupabaseConnectionForm } from "./SupabaseConnectionForm";
|
import { SupabaseConnectionForm } from "./SupabaseConnectionForm";
|
||||||
import { TeamCityConnectionForm } from "./TeamCityConnectionForm";
|
import { TeamCityConnectionForm } from "./TeamCityConnectionForm";
|
||||||
@@ -47,7 +48,6 @@ import { TerraformCloudConnectionForm } from "./TerraformCloudConnectionForm";
|
|||||||
import { VercelConnectionForm } from "./VercelConnectionForm";
|
import { VercelConnectionForm } from "./VercelConnectionForm";
|
||||||
import { WindmillConnectionForm } from "./WindmillConnectionForm";
|
import { WindmillConnectionForm } from "./WindmillConnectionForm";
|
||||||
import { ZabbixConnectionForm } from "./ZabbixConnectionForm";
|
import { ZabbixConnectionForm } from "./ZabbixConnectionForm";
|
||||||
import { RedisConnectionForm } from "./RedisConnectionForm";
|
|
||||||
|
|
||||||
type FormProps = {
|
type FormProps = {
|
||||||
onComplete: (appConnection: TAppConnection) => void;
|
onComplete: (appConnection: TAppConnection) => void;
|
||||||
|
|||||||
+146
-148
@@ -1,9 +1,11 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { Controller, FormProvider, useForm } from "react-hook-form";
|
import { Controller, FormProvider, useForm } from "react-hook-form";
|
||||||
|
import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||||
|
import { Tab } from "@headlessui/react";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { Tab } from "@headlessui/react";
|
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
FormControl,
|
FormControl,
|
||||||
@@ -24,8 +26,6 @@ import {
|
|||||||
genericAppConnectionFieldsSchema,
|
genericAppConnectionFieldsSchema,
|
||||||
GenericAppConnectionsFields
|
GenericAppConnectionsFields
|
||||||
} from "./GenericAppConnectionFields";
|
} from "./GenericAppConnectionFields";
|
||||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
||||||
import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons";
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
appConnection?: TRedisConnection;
|
appConnection?: TRedisConnection;
|
||||||
@@ -123,175 +123,173 @@ export const RedisConnectionForm = ({ appConnection, onSubmit }: Props) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<>
|
<Tab.Group selectedIndex={selectedTabIndex} onChange={setSelectedTabIndex}>
|
||||||
<Tab.Group selectedIndex={selectedTabIndex} onChange={setSelectedTabIndex}>
|
<Tab.List className="-pb-1 mb-6 w-full border-b-2 border-mineshaft-600">
|
||||||
<Tab.List className="-pb-1 mb-6 w-full border-b-2 border-mineshaft-600">
|
<Tab
|
||||||
<Tab
|
className={({ selected }) =>
|
||||||
className={({ selected }) =>
|
`w-30 -mb-[0.14rem] px-4 py-2 text-sm font-medium outline-none disabled:opacity-60 ${
|
||||||
`w-30 -mb-[0.14rem] px-4 py-2 text-sm font-medium outline-none disabled:opacity-60 ${
|
selected
|
||||||
selected
|
? "border-b-2 border-mineshaft-300 text-mineshaft-200"
|
||||||
? "border-b-2 border-mineshaft-300 text-mineshaft-200"
|
: "text-bunker-300"
|
||||||
: "text-bunker-300"
|
}`
|
||||||
}`
|
}
|
||||||
}
|
>
|
||||||
>
|
Configuration
|
||||||
Configuration
|
</Tab>
|
||||||
</Tab>
|
<Tab
|
||||||
<Tab
|
className={({ selected }) =>
|
||||||
className={({ selected }) =>
|
`w-30 -mb-[0.14rem] px-4 py-2 text-sm font-medium outline-none disabled:opacity-60 ${
|
||||||
`w-30 -mb-[0.14rem] px-4 py-2 text-sm font-medium outline-none disabled:opacity-60 ${
|
selected
|
||||||
selected
|
? "border-b-2 border-mineshaft-300 text-mineshaft-200"
|
||||||
? "border-b-2 border-mineshaft-300 text-mineshaft-200"
|
: "text-bunker-300"
|
||||||
: "text-bunker-300"
|
}`
|
||||||
}`
|
}
|
||||||
}
|
>
|
||||||
>
|
SSL ({sslEnabled ? "Enabled" : "Disabled"})
|
||||||
SSL ({sslEnabled ? "Enabled" : "Disabled"})
|
</Tab>
|
||||||
</Tab>
|
</Tab.List>
|
||||||
</Tab.List>
|
<Tab.Panels className="mb-4 rounded border border-mineshaft-600 bg-mineshaft-700/70 p-3 pb-0">
|
||||||
<Tab.Panels className="mb-4 rounded border border-mineshaft-600 bg-mineshaft-700/70 p-3 pb-0">
|
<Tab.Panel>
|
||||||
<Tab.Panel>
|
<div className="mt-[0.675rem] flex items-start gap-2">
|
||||||
<div className="mt-[0.675rem] flex items-start gap-2">
|
|
||||||
<Controller
|
|
||||||
name="credentials.host"
|
|
||||||
control={control}
|
|
||||||
render={({ field, fieldState: { error } }) => (
|
|
||||||
<FormControl
|
|
||||||
className="flex-1"
|
|
||||||
errorText={error?.message}
|
|
||||||
isError={Boolean(error?.message)}
|
|
||||||
label="Host"
|
|
||||||
>
|
|
||||||
<Input {...field} />
|
|
||||||
</FormControl>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<Controller
|
|
||||||
name="credentials.port"
|
|
||||||
control={control}
|
|
||||||
render={({ field, fieldState: { error } }) => (
|
|
||||||
<FormControl
|
|
||||||
className="w-28"
|
|
||||||
errorText={error?.message}
|
|
||||||
isError={Boolean(error?.message)}
|
|
||||||
label="Port"
|
|
||||||
>
|
|
||||||
<Input type="number" {...field} />
|
|
||||||
</FormControl>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="mb-[0.675rem] flex items-start gap-2">
|
|
||||||
<Controller
|
|
||||||
name="credentials.username"
|
|
||||||
control={control}
|
|
||||||
render={({ field, fieldState: { error } }) => (
|
|
||||||
<FormControl
|
|
||||||
errorText={error?.message}
|
|
||||||
isError={Boolean(error?.message)}
|
|
||||||
label="Username"
|
|
||||||
className="flex-1"
|
|
||||||
>
|
|
||||||
<Input {...field} />
|
|
||||||
</FormControl>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<Controller
|
|
||||||
name="credentials.password"
|
|
||||||
control={control}
|
|
||||||
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
|
||||||
<FormControl
|
|
||||||
errorText={error?.message}
|
|
||||||
isError={Boolean(error?.message)}
|
|
||||||
label="Password"
|
|
||||||
className="flex-1"
|
|
||||||
>
|
|
||||||
<SecretInput
|
|
||||||
containerClassName="text-gray-400 w-full group-focus-within:!border-primary-400/50 border border-mineshaft-500 bg-mineshaft-900 px-2.5 py-1.5"
|
|
||||||
value={value}
|
|
||||||
onChange={(e) => onChange(e.target.value)}
|
|
||||||
/>
|
|
||||||
</FormControl>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</Tab.Panel>
|
|
||||||
<Tab.Panel>
|
|
||||||
<Controller
|
<Controller
|
||||||
name="credentials.sslEnabled"
|
name="credentials.host"
|
||||||
control={control}
|
control={control}
|
||||||
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
render={({ field, fieldState: { error } }) => (
|
||||||
<FormControl isError={Boolean(error?.message)} errorText={error?.message}>
|
<FormControl
|
||||||
<Switch
|
className="flex-1"
|
||||||
className="bg-mineshaft-400/50 shadow-inner data-[state=checked]:bg-green/80"
|
errorText={error?.message}
|
||||||
id="ssl-enabled"
|
isError={Boolean(error?.message)}
|
||||||
thumbClassName="bg-mineshaft-800"
|
label="Host"
|
||||||
isChecked={value}
|
>
|
||||||
onCheckedChange={onChange}
|
<Input {...field} />
|
||||||
>
|
|
||||||
Enable SSL
|
|
||||||
</Switch>
|
|
||||||
</FormControl>
|
</FormControl>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<Controller
|
<Controller
|
||||||
name="credentials.sslCertificate"
|
name="credentials.port"
|
||||||
|
control={control}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<FormControl
|
||||||
|
className="w-28"
|
||||||
|
errorText={error?.message}
|
||||||
|
isError={Boolean(error?.message)}
|
||||||
|
label="Port"
|
||||||
|
>
|
||||||
|
<Input type="number" {...field} />
|
||||||
|
</FormControl>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="mb-[0.675rem] flex items-start gap-2">
|
||||||
|
<Controller
|
||||||
|
name="credentials.username"
|
||||||
control={control}
|
control={control}
|
||||||
render={({ field, fieldState: { error } }) => (
|
render={({ field, fieldState: { error } }) => (
|
||||||
<FormControl
|
<FormControl
|
||||||
errorText={error?.message}
|
errorText={error?.message}
|
||||||
isError={Boolean(error?.message)}
|
isError={Boolean(error?.message)}
|
||||||
className={sslEnabled ? "" : "opacity-50"}
|
label="Username"
|
||||||
label="SSL Certificate"
|
className="flex-1"
|
||||||
isOptional
|
|
||||||
>
|
>
|
||||||
<TextArea
|
<Input {...field} />
|
||||||
className="h-[3.5rem] !resize-none"
|
|
||||||
{...field}
|
|
||||||
isDisabled={!sslEnabled}
|
|
||||||
/>
|
|
||||||
</FormControl>
|
</FormControl>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<Controller
|
<Controller
|
||||||
name="credentials.sslRejectUnauthorized"
|
name="credentials.password"
|
||||||
control={control}
|
control={control}
|
||||||
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
||||||
<FormControl
|
<FormControl
|
||||||
className={sslEnabled ? "" : "opacity-50"}
|
|
||||||
isError={Boolean(error?.message)}
|
|
||||||
errorText={error?.message}
|
errorText={error?.message}
|
||||||
|
isError={Boolean(error?.message)}
|
||||||
|
label="Password"
|
||||||
|
className="flex-1"
|
||||||
>
|
>
|
||||||
<Switch
|
<SecretInput
|
||||||
className="bg-mineshaft-400/50 shadow-inner data-[state=checked]:bg-green/80"
|
containerClassName="text-gray-400 w-full group-focus-within:!border-primary-400/50 border border-mineshaft-500 bg-mineshaft-900 px-2.5 py-1.5"
|
||||||
id="ssl-reject-unauthorized"
|
value={value}
|
||||||
thumbClassName="bg-mineshaft-800"
|
onChange={(e) => onChange(e.target.value)}
|
||||||
isChecked={sslEnabled ? value : false}
|
/>
|
||||||
onCheckedChange={onChange}
|
|
||||||
isDisabled={!sslEnabled}
|
|
||||||
>
|
|
||||||
<p className="w-[9.5rem]">
|
|
||||||
Reject Unauthorized
|
|
||||||
<Tooltip
|
|
||||||
className="max-w-md"
|
|
||||||
content={
|
|
||||||
<p>
|
|
||||||
If enabled, Infisical will only connect to the server if it has a
|
|
||||||
valid, trusted SSL certificate.
|
|
||||||
</p>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<FontAwesomeIcon icon={faQuestionCircle} size="sm" className="ml-1" />
|
|
||||||
</Tooltip>
|
|
||||||
</p>
|
|
||||||
</Switch>
|
|
||||||
</FormControl>
|
</FormControl>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Tab.Panel>
|
</div>
|
||||||
</Tab.Panels>
|
</Tab.Panel>
|
||||||
</Tab.Group>
|
<Tab.Panel>
|
||||||
</>
|
<Controller
|
||||||
|
name="credentials.sslEnabled"
|
||||||
|
control={control}
|
||||||
|
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
||||||
|
<FormControl isError={Boolean(error?.message)} errorText={error?.message}>
|
||||||
|
<Switch
|
||||||
|
className="bg-mineshaft-400/50 shadow-inner data-[state=checked]:bg-green/80"
|
||||||
|
id="ssl-enabled"
|
||||||
|
thumbClassName="bg-mineshaft-800"
|
||||||
|
isChecked={value}
|
||||||
|
onCheckedChange={onChange}
|
||||||
|
>
|
||||||
|
Enable SSL
|
||||||
|
</Switch>
|
||||||
|
</FormControl>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
<Controller
|
||||||
|
name="credentials.sslCertificate"
|
||||||
|
control={control}
|
||||||
|
render={({ field, fieldState: { error } }) => (
|
||||||
|
<FormControl
|
||||||
|
errorText={error?.message}
|
||||||
|
isError={Boolean(error?.message)}
|
||||||
|
className={sslEnabled ? "" : "opacity-50"}
|
||||||
|
label="SSL Certificate"
|
||||||
|
isOptional
|
||||||
|
>
|
||||||
|
<TextArea
|
||||||
|
className="h-[3.5rem] !resize-none"
|
||||||
|
{...field}
|
||||||
|
isDisabled={!sslEnabled}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
<Controller
|
||||||
|
name="credentials.sslRejectUnauthorized"
|
||||||
|
control={control}
|
||||||
|
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
||||||
|
<FormControl
|
||||||
|
className={sslEnabled ? "" : "opacity-50"}
|
||||||
|
isError={Boolean(error?.message)}
|
||||||
|
errorText={error?.message}
|
||||||
|
>
|
||||||
|
<Switch
|
||||||
|
className="bg-mineshaft-400/50 shadow-inner data-[state=checked]:bg-green/80"
|
||||||
|
id="ssl-reject-unauthorized"
|
||||||
|
thumbClassName="bg-mineshaft-800"
|
||||||
|
isChecked={sslEnabled ? value : false}
|
||||||
|
onCheckedChange={onChange}
|
||||||
|
isDisabled={!sslEnabled}
|
||||||
|
>
|
||||||
|
<p className="w-[9.5rem]">
|
||||||
|
Reject Unauthorized
|
||||||
|
<Tooltip
|
||||||
|
className="max-w-md"
|
||||||
|
content={
|
||||||
|
<p>
|
||||||
|
If enabled, Infisical will only connect to the server if it has a
|
||||||
|
valid, trusted SSL certificate.
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<FontAwesomeIcon icon={faQuestionCircle} size="sm" className="ml-1" />
|
||||||
|
</Tooltip>
|
||||||
|
</p>
|
||||||
|
</Switch>
|
||||||
|
</FormControl>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Tab.Panel>
|
||||||
|
</Tab.Panels>
|
||||||
|
</Tab.Group>
|
||||||
|
|
||||||
<div className="mt-6 flex items-center">
|
<div className="mt-6 flex items-center">
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import {
|
|||||||
Tr
|
Tr
|
||||||
} from "@app/components/v2";
|
} from "@app/components/v2";
|
||||||
import { ROUTE_PATHS } from "@app/const/routes";
|
import { ROUTE_PATHS } from "@app/const/routes";
|
||||||
|
import { useSubscription } from "@app/context";
|
||||||
import {
|
import {
|
||||||
ProjectPermissionActions,
|
ProjectPermissionActions,
|
||||||
ProjectPermissionPamAccountActions,
|
ProjectPermissionPamAccountActions,
|
||||||
@@ -54,7 +55,6 @@ import { PamDeleteFolderModal } from "./PamDeleteFolderModal";
|
|||||||
import { PamFolderRow } from "./PamFolderRow";
|
import { PamFolderRow } from "./PamFolderRow";
|
||||||
import { PamUpdateAccountModal } from "./PamUpdateAccountModal";
|
import { PamUpdateAccountModal } from "./PamUpdateAccountModal";
|
||||||
import { PamUpdateFolderModal } from "./PamUpdateFolderModal";
|
import { PamUpdateFolderModal } from "./PamUpdateFolderModal";
|
||||||
import { useSubscription } from "@app/context";
|
|
||||||
|
|
||||||
enum OrderBy {
|
enum OrderBy {
|
||||||
Name = "name"
|
Name = "name"
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import { twMerge } from "tailwind-merge";
|
|||||||
|
|
||||||
import { ProjectPermissionCan } from "@app/components/permissions";
|
import { ProjectPermissionCan } from "@app/components/permissions";
|
||||||
import {
|
import {
|
||||||
Badge,
|
|
||||||
Button,
|
Button,
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
DropdownMenuContent,
|
DropdownMenuContent,
|
||||||
|
|||||||
+1
-1
@@ -221,7 +221,7 @@ export const CreateSecretForm = ({ secretPath = "/", onClose }: Props) => {
|
|||||||
warning={
|
warning={
|
||||||
secretKey?.includes(" ") ? (
|
secretKey?.includes(" ") ? (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className={"w-full max-w-72"}
|
className="w-full max-w-72"
|
||||||
content={
|
content={
|
||||||
<div>
|
<div>
|
||||||
Secret key contains whitespaces.
|
Secret key contains whitespaces.
|
||||||
|
|||||||
+1
-1
@@ -158,7 +158,7 @@ function SecretRenameRow({ environments, getSecretByKey, secretKey, secretPath }
|
|||||||
{currentSecretValue?.trim()?.includes(" ") &&
|
{currentSecretValue?.trim()?.includes(" ") &&
|
||||||
currentSecretValue?.trim() !== secretKey && (
|
currentSecretValue?.trim() !== secretKey && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className={"w-full max-w-72"}
|
className="w-full max-w-72"
|
||||||
content={
|
content={
|
||||||
<div>
|
<div>
|
||||||
Secret key contains whitespaces.
|
Secret key contains whitespaces.
|
||||||
|
|||||||
+1
-1
@@ -181,7 +181,7 @@ export const CreateSecretForm = ({
|
|||||||
warning={
|
warning={
|
||||||
secretKey?.includes(" ") ? (
|
secretKey?.includes(" ") ? (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className={"w-full max-w-72"}
|
className="w-full max-w-72"
|
||||||
content={
|
content={
|
||||||
<div>
|
<div>
|
||||||
Secret key contains whitespaces.
|
Secret key contains whitespaces.
|
||||||
|
|||||||
+1
-1
@@ -491,7 +491,7 @@ export const SecretItem = memo(
|
|||||||
field?.value !== (originalSecret.originalKey || originalSecret.key) &&
|
field?.value !== (originalSecret.originalKey || originalSecret.key) &&
|
||||||
field.value?.includes(" ") ? (
|
field.value?.includes(" ") ? (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className={"w-full max-w-72"}
|
className="w-full max-w-72"
|
||||||
content={
|
content={
|
||||||
<div>
|
<div>
|
||||||
Secret key contains whitespaces.
|
Secret key contains whitespaces.
|
||||||
|
|||||||
Reference in New Issue
Block a user