From 0703b213557c9fc9bbfb16301a8a8876f46534ff Mon Sep 17 00:00:00 2001 From: Lukasz Ostafin Date: Tue, 14 Jan 2025 10:22:22 +0100 Subject: [PATCH 1/2] IBX-9274: Added URL validation --- .../public/js/scripts/fieldType/ezurl.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js index dab4cd47dd..1935bdd5a9 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js @@ -7,17 +7,30 @@ class EzUrlValidator extends ibexa.BaseFieldValidator { validateUrl(event) { + const result = { + isError: false, + errorMessage: null, + }; const input = event.currentTarget; + const urlValue = input.value.trim(); const isRequired = input.required; - const isEmpty = !input.value.trim(); - const isError = isEmpty && isRequired; + const isEmpty = !urlValue; const label = input.closest(SELECTOR_FIELD_LINK).querySelector(SELECTOR_LABEL).innerHTML; - const result = { isError }; if (isRequired && isEmpty) { + result.isError = true; result.errorMessage = ibexa.errors.emptyField.replace('{fieldName}', label); } + if (!isEmpty) { + try { + new URL(urlValue); + } catch (error) { + result.isError = true; + result.errorMessage = ibexa.errors.invalidUrl; + } + } + return result; } } From 02e3ec31bd91979a57a6e23903e342bce13fe382 Mon Sep 17 00:00:00 2001 From: Lukasz Ostafin Date: Thu, 30 Jan 2025 16:12:36 +0100 Subject: [PATCH 2/2] After CR --- src/bundle/Resources/public/js/scripts/fieldType/ezurl.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js index 1935bdd5a9..2f977e88ed 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js @@ -23,9 +23,9 @@ } if (!isEmpty) { - try { - new URL(urlValue); - } catch (error) { + const isUrlValid = URL.canParse(urlValue); + + if (!isUrlValid) { result.isError = true; result.errorMessage = ibexa.errors.invalidUrl; }