Skip to content

Commit

Permalink
fix: bug on button Suivant and validation rules (#1816)
Browse files Browse the repository at this point in the history
  • Loading branch information
pom421 authored Nov 8, 2023
1 parent 6953d79 commit cce9e2f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,40 @@ import { assertOrRedirectCommencerStep, funnelConfig, type FunnelKey } from "../
import style from "./RemunerationGenericForm.module.scss";

const formSchema = zodFr.object({
catégories: z.array(
z.object({
nom: z.string(),
tranches: z.object({
[AgeRange.Enum.LESS_THAN_30]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_30_TO_39]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_40_TO_49]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_50_TO_MORE]: zodNumberOrNaNOrNull,
catégories: z
.array(
z.object({
nom: z.string(),
tranches: z.object({
[AgeRange.Enum.LESS_THAN_30]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_30_TO_39]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_40_TO_49]: zodNumberOrNaNOrNull,
[AgeRange.Enum.FROM_50_TO_MORE]: zodNumberOrNaNOrNull,
}),
}),
)
.superRefine((val, ctx) => {
if (notFilled(val)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: "Vous devez renseigner au moins un écart si votre indicateur est calculable",
});
}
}),
),
});

// Infer the TS type according to the zod schema.
type FormType = z.infer<typeof formSchema>;

const notFilled = (catégories: FormType["catégories"]) =>
catégories.every(
catégorie =>
catégorie.tranches[AgeRange.Enum.LESS_THAN_30] === null &&
catégorie.tranches[AgeRange.Enum.FROM_30_TO_39] === null &&
catégorie.tranches[AgeRange.Enum.FROM_40_TO_49] === null &&
catégorie.tranches[AgeRange.Enum.FROM_50_TO_MORE] === null,
);

const defaultTranch = { ":29": null, "30:39": null, "40:49": null, "50:": null };

const buildDefaultCategories = (mode: Remunerations["mode"]) =>
Expand Down Expand Up @@ -93,15 +111,7 @@ export const RemunerationGenericForm = ({ mode }: { mode: Remunerations["mode"]
});

const onSubmit = async (data: FormType) => {
const notFilled = data.catégories.every(
catégorie =>
catégorie.tranches[AgeRange.Enum.LESS_THAN_30] === null &&
catégorie.tranches[AgeRange.Enum.FROM_30_TO_39] === null &&
catégorie.tranches[AgeRange.Enum.FROM_40_TO_49] === null &&
catégorie.tranches[AgeRange.Enum.FROM_50_TO_MORE] === null,
);

if (notFilled) {
if (notFilled(data.catégories)) {
return setError("root.catégories", {
message:
mode === "csp"
Expand Down
4 changes: 4 additions & 0 deletions packages/app/src/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import { type NextMiddlewareWithAuth, withAuth } from "next-auth/middleware";

const cspMiddleware: NextMiddlewareWithAuth = req => {
const nonce = Buffer.from(crypto.randomUUID()).toString("base64");

// TODO: les headers commentés évitent le problème no unsafe-eval et trusted types, qui se retrouvent sinon sur la prod.
// Voir comment les réactiver.

const cspHeader = `
// default-src 'self' https://*.gouv.fr;
connect-src 'self' https://*.gouv.fr;
Expand Down

0 comments on commit cce9e2f

Please sign in to comment.