mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-04 01:26:09 +00:00
improvements: address feedback
This commit is contained in:
+3
@@ -1,3 +1,4 @@
|
|||||||
|
import RE2 from "re2";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { SecretRotation } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-enums";
|
import { SecretRotation } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-enums";
|
||||||
@@ -8,6 +9,7 @@ import {
|
|||||||
} from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-schemas";
|
} from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-schemas";
|
||||||
import { PasswordRequirementsSchema } from "@app/ee/services/secret-rotation-v2/shared/general";
|
import { PasswordRequirementsSchema } from "@app/ee/services/secret-rotation-v2/shared/general";
|
||||||
import { SecretRotations } from "@app/lib/api-docs";
|
import { SecretRotations } from "@app/lib/api-docs";
|
||||||
|
import { DistinguishedNameRegex } from "@app/lib/regex";
|
||||||
import { SecretNameSchema } from "@app/server/lib/schemas";
|
import { SecretNameSchema } from "@app/server/lib/schemas";
|
||||||
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
|
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
|
||||||
|
|
||||||
@@ -24,6 +26,7 @@ const LdapPasswordRotationParametersSchema = z.object({
|
|||||||
dn: z
|
dn: z
|
||||||
.string()
|
.string()
|
||||||
.trim()
|
.trim()
|
||||||
|
.regex(new RE2(DistinguishedNameRegex), "Invalid DN format, ie; CN=user,OU=users,DC=example,DC=com")
|
||||||
.min(1, "Distinguished Name (DN) Required")
|
.min(1, "Distinguished Name (DN) Required")
|
||||||
.describe(SecretRotations.PARAMETERS.LDAP_PASSWORD.dn),
|
.describe(SecretRotations.PARAMETERS.LDAP_PASSWORD.dn),
|
||||||
passwordRequirements: PasswordRequirementsSchema.optional()
|
passwordRequirements: PasswordRequirementsSchema.optional()
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export const DistinguishedNameRegex =
|
||||||
|
// DN format, ie; CN=user,OU=users,DC=example,DC=com
|
||||||
|
/^(?:(?:[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)(?:(?:\\+[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)*)(?:,(?:[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)(?:(?:\\+[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)*))*)?$/;
|
||||||
@@ -2,6 +2,7 @@ import RE2 from "re2";
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { AppConnections } from "@app/lib/api-docs";
|
import { AppConnections } from "@app/lib/api-docs";
|
||||||
|
import { DistinguishedNameRegex } from "@app/lib/regex";
|
||||||
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
|
import { AppConnection } from "@app/services/app-connection/app-connection-enums";
|
||||||
import {
|
import {
|
||||||
BaseAppConnectionSchema,
|
BaseAppConnectionSchema,
|
||||||
@@ -19,7 +20,12 @@ export const LdapConnectionSimpleBindCredentialsSchema = z.object({
|
|||||||
.min(1, "URL required")
|
.min(1, "URL required")
|
||||||
.regex(new RE2(/^ldaps?:\/\//))
|
.regex(new RE2(/^ldaps?:\/\//))
|
||||||
.describe(AppConnections.CREDENTIALS.LDAP.url),
|
.describe(AppConnections.CREDENTIALS.LDAP.url),
|
||||||
dn: z.string().trim().min(1, "Distinguished Name (DN) required").describe(AppConnections.CREDENTIALS.LDAP.dn),
|
dn: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.regex(new RE2(DistinguishedNameRegex), "Invalid DN format, ie; CN=user,OU=users,DC=example,DC=com")
|
||||||
|
.min(1, "Distinguished Name (DN) required")
|
||||||
|
.describe(AppConnections.CREDENTIALS.LDAP.dn),
|
||||||
password: z.string().trim().min(1, "Password required").describe(AppConnections.CREDENTIALS.LDAP.password),
|
password: z.string().trim().min(1, "Password required").describe(AppConnections.CREDENTIALS.LDAP.password),
|
||||||
sslRejectUnauthorized: z.boolean().optional().describe(AppConnections.CREDENTIALS.LDAP.sslRejectUnauthorized),
|
sslRejectUnauthorized: z.boolean().optional().describe(AppConnections.CREDENTIALS.LDAP.sslRejectUnauthorized),
|
||||||
sslCertificate: z
|
sslCertificate: z
|
||||||
|
|||||||
+6
-1
@@ -2,13 +2,18 @@ import { z } from "zod";
|
|||||||
|
|
||||||
import { BaseSecretRotationSchema } from "@app/components/secret-rotations-v2/forms/schemas/base-secret-rotation-v2-schema";
|
import { BaseSecretRotationSchema } from "@app/components/secret-rotations-v2/forms/schemas/base-secret-rotation-v2-schema";
|
||||||
import { PasswordRequirementsSchema } from "@app/components/secret-rotations-v2/forms/schemas/shared";
|
import { PasswordRequirementsSchema } from "@app/components/secret-rotations-v2/forms/schemas/shared";
|
||||||
|
import { DistinguishedNameRegex } from "@app/helpers/string";
|
||||||
import { SecretRotation } from "@app/hooks/api/secretRotationsV2";
|
import { SecretRotation } from "@app/hooks/api/secretRotationsV2";
|
||||||
|
|
||||||
export const LdapPasswordRotationSchema = z
|
export const LdapPasswordRotationSchema = z
|
||||||
.object({
|
.object({
|
||||||
type: z.literal(SecretRotation.LdapPassword),
|
type: z.literal(SecretRotation.LdapPassword),
|
||||||
parameters: z.object({
|
parameters: z.object({
|
||||||
dn: z.string().trim().min(1, "Distinguished Name (DN) required"),
|
dn: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.regex(DistinguishedNameRegex, "Invalid Distinguished Name format")
|
||||||
|
.min(1, "Distinguished Name (DN) required"),
|
||||||
passwordRequirements: PasswordRequirementsSchema.optional()
|
passwordRequirements: PasswordRequirementsSchema.optional()
|
||||||
}),
|
}),
|
||||||
secretsMapping: z.object({
|
secretsMapping: z.object({
|
||||||
|
|||||||
@@ -12,3 +12,6 @@ export const isValidPath = (val: string): boolean => {
|
|||||||
const validPathRegex = /^[a-zA-Z0-9-_.:]+(?:\/[a-zA-Z0-9-_.:]+)*$/;
|
const validPathRegex = /^[a-zA-Z0-9-_.:]+(?:\/[a-zA-Z0-9-_.:]+)*$/;
|
||||||
return validPathRegex.test(val);
|
return validPathRegex.test(val);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const DistinguishedNameRegex =
|
||||||
|
/^(?:(?:[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)(?:(?:\\+[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)*)(?:,(?:[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)(?:(?:\\+[a-zA-Z0-9]+=[^,+="<>#;\\\\]+)*))*)?$/;
|
||||||
|
|||||||
+6
-1
@@ -19,6 +19,7 @@ import {
|
|||||||
Tooltip
|
Tooltip
|
||||||
} from "@app/components/v2";
|
} from "@app/components/v2";
|
||||||
import { APP_CONNECTION_MAP, getAppConnectionMethodDetails } from "@app/helpers/appConnections";
|
import { APP_CONNECTION_MAP, getAppConnectionMethodDetails } from "@app/helpers/appConnections";
|
||||||
|
import { DistinguishedNameRegex } from "@app/helpers/string";
|
||||||
import {
|
import {
|
||||||
LdapConnectionMethod,
|
LdapConnectionMethod,
|
||||||
LdapConnectionProvider,
|
LdapConnectionProvider,
|
||||||
@@ -51,7 +52,11 @@ const formSchema = z.discriminatedUnion("method", [
|
|||||||
.url()
|
.url()
|
||||||
.trim()
|
.trim()
|
||||||
.min(1, "LDAP URL required"),
|
.min(1, "LDAP URL required"),
|
||||||
dn: z.string().trim().min(1, "Distinguished Name (DN) required"),
|
dn: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.regex(DistinguishedNameRegex, "Invalid Distinguished Name format")
|
||||||
|
.min(1, "Distinguished Name (DN) required"),
|
||||||
password: z.string().trim().min(1, "Password required"),
|
password: z.string().trim().min(1, "Password required"),
|
||||||
sslRejectUnauthorized: z.boolean(),
|
sslRejectUnauthorized: z.boolean(),
|
||||||
sslCertificate: z
|
sslCertificate: z
|
||||||
|
|||||||
Reference in New Issue
Block a user