diff --git a/web/src/core/tools/generateRandomPassword.ts b/web/src/core/tools/generateRandomPassword.ts index 98b537c52..2acb98ff7 100644 --- a/web/src/core/tools/generateRandomPassword.ts +++ b/web/src/core/tools/generateRandomPassword.ts @@ -1,7 +1,5 @@ export function generateRandomPassword() { - return Array(2) - .fill("") - .map(() => Math.random().toString(36).slice(-10)) - .join("") - .replace(/\./g, ""); -} + const array = new Uint8Array(20); + crypto.getRandomValues(array); + return Array.from(array, byte => (byte % 36).toString(36)).join(""); +} \ No newline at end of file diff --git a/web/src/core/usecases/launcher/decoupledLogic/computeRootForm/mergeRangeSliders/removeFormFieldGroupWithNoNodes.ts b/web/src/core/usecases/launcher/decoupledLogic/computeRootForm/mergeRangeSliders/removeFormFieldGroupWithNoNodes.ts index d49febd50..94e1f23dd 100644 --- a/web/src/core/usecases/launcher/decoupledLogic/computeRootForm/mergeRangeSliders/removeFormFieldGroupWithNoNodes.ts +++ b/web/src/core/usecases/launcher/decoupledLogic/computeRootForm/mergeRangeSliders/removeFormFieldGroupWithNoNodes.ts @@ -38,16 +38,18 @@ function removeFormFieldGroupLeafWithNoNodes_rec(params: { let hasRemoved = false; - nodes.forEach(node => { + for (let i = nodes.length - 1; i >= 0; i--) { + const node = nodes[i]; + if (node.type === "field") { - return; + continue; } if (node.nodes.length === 0) { if (node.canAdd) { - return; + continue; } - nodes.splice(nodes.indexOf(node), 1); + nodes.splice(i, 1); hasRemoved = true; } else { const { hasRemoved: hasRemoved_i } = removeFormFieldGroupLeafWithNoNodes_rec({ @@ -58,7 +60,7 @@ function removeFormFieldGroupLeafWithNoNodes_rec(params: { hasRemoved = true; } } - }); + } return { hasRemoved }; }