mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 04:27:38 +00:00
misc: added oidc create validation in route
This commit is contained in:
@@ -242,32 +242,81 @@ export const registerOidcRouter = async (server: FastifyZodProvider) => {
|
|||||||
},
|
},
|
||||||
onRequest: verifyAuth([AuthMode.JWT]),
|
onRequest: verifyAuth([AuthMode.JWT]),
|
||||||
schema: {
|
schema: {
|
||||||
body: z.object({
|
body: z
|
||||||
allowedEmailDomains: z
|
.object({
|
||||||
.string()
|
allowedEmailDomains: z
|
||||||
.trim()
|
.string()
|
||||||
.optional()
|
.trim()
|
||||||
.default("")
|
.optional()
|
||||||
.transform((data) => {
|
.default("")
|
||||||
if (data === "") return "";
|
.transform((data) => {
|
||||||
// Trim each ID and join with ', ' to ensure formatting
|
if (data === "") return "";
|
||||||
return data
|
// Trim each ID and join with ', ' to ensure formatting
|
||||||
.split(",")
|
return data
|
||||||
.map((id) => id.trim())
|
.split(",")
|
||||||
.join(", ");
|
.map((id) => id.trim())
|
||||||
}),
|
.join(", ");
|
||||||
configurationType: z.nativeEnum(OIDCConfigurationType),
|
}),
|
||||||
issuer: z.string().trim().optional().default(""),
|
configurationType: z.nativeEnum(OIDCConfigurationType),
|
||||||
discoveryURL: z.string().trim().optional().default(""),
|
issuer: z.string().trim().optional().default(""),
|
||||||
authorizationEndpoint: z.string().trim().optional().default(""),
|
discoveryURL: z.string().trim().optional().default(""),
|
||||||
jwksUri: z.string().trim().optional().default(""),
|
authorizationEndpoint: z.string().trim().optional().default(""),
|
||||||
tokenEndpoint: z.string().trim().optional().default(""),
|
jwksUri: z.string().trim().optional().default(""),
|
||||||
userinfoEndpoint: z.string().trim().optional().default(""),
|
tokenEndpoint: z.string().trim().optional().default(""),
|
||||||
clientId: z.string().trim(),
|
userinfoEndpoint: z.string().trim().optional().default(""),
|
||||||
clientSecret: z.string().trim(),
|
clientId: z.string().trim(),
|
||||||
isActive: z.boolean(),
|
clientSecret: z.string().trim(),
|
||||||
orgSlug: z.string().trim()
|
isActive: z.boolean(),
|
||||||
}),
|
orgSlug: z.string().trim()
|
||||||
|
})
|
||||||
|
.superRefine((data, ctx) => {
|
||||||
|
if (data.configurationType === OIDCConfigurationType.CUSTOM) {
|
||||||
|
if (!data.issuer) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["issuer"],
|
||||||
|
message: "Issuer is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!data.authorizationEndpoint) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["authorizationEndpoint"],
|
||||||
|
message: "Authorization endpoint is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!data.jwksUri) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["jwksUri"],
|
||||||
|
message: "JWKS URI is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!data.tokenEndpoint) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["tokenEndpoint"],
|
||||||
|
message: "Token endpoint is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!data.userinfoEndpoint) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["userinfoEndpoint"],
|
||||||
|
message: "Userinfo endpoint is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// eslint-disable-next-line no-lonely-if
|
||||||
|
if (!data.discoveryURL) {
|
||||||
|
ctx.addIssue({
|
||||||
|
path: ["discoveryURL"],
|
||||||
|
message: "Discovery URL is required",
|
||||||
|
code: z.ZodIssueCode.custom
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
response: {
|
response: {
|
||||||
200: OidcConfigsSchema.pick({
|
200: OidcConfigsSchema.pick({
|
||||||
id: true,
|
id: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user