diff --git a/CHANGELOG.md b/CHANGELOG.md index ff25efb34be031a7257675ac810bb111201bdac3..2dd5ba87f739f982931af2493d9615d96b9b4961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CoCOTS Changelog +## v0.1.6 + +* Better website validation. + ## v0.1.5 * Website: min length to 2, and authorize - and _. diff --git a/htdocs/lib/forms/creation.php b/htdocs/lib/forms/creation.php index 73d7dd1a87958713bc97cafca421b1f9cb2886df..b178ce3eeaaa7c4c24dea18870d592fd4f3bcfdd 100644 --- a/htdocs/lib/forms/creation.php +++ b/htdocs/lib/forms/creation.php @@ -22,7 +22,7 @@ class CreationForm extends Form { 'required' => true, 'label' => $this->app->loc->translateSafe('website_name'), 'placeholder' => true, - 'pattern' => '[a-z0-9_-]{2,40}', + 'pattern' => '[a-z0-9][a-z0-9-]{1,40}', 'title' => $this->app->loc->translateSafe('website_name_constraints'), 'aria-label' => $this->app->loc->translateSafe('website_name_constraints') )); @@ -106,6 +106,12 @@ class CreationForm extends Form { $name = $this->fields['website_name']->getValue(); + $tmpurl = $name . '.example.com'; + if (!filter_var($tmpurl, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) { + $this->fields['website_name']->addErrorCode('error_website_name_invalid'); + return false; + } + if (defined('COCOTS_RESERVED_NAMES') && is_array(COCOTS_RESERVED_NAMES)) { if (in_array($name, COCOTS_RESERVED_NAMES)) { $this->fields['website_name']->addErrorCode('error_website_name_already_exists'); diff --git a/htdocs/translations/en.lang b/htdocs/translations/en.lang index 5c0207d8e78af9b9208214abd636696036892a4c..5ac10a55ef9c2e91968cccd173c89111a7d28008 100644 --- a/htdocs/translations/en.lang +++ b/htdocs/translations/en.lang @@ -18,7 +18,7 @@ website_plugin_2 = Plugin 2 website_plugin_3 = Plugin 3 website_plugin_4 = Plugin 4 -website_name_constraints = 3 to 40 lowercase alphanumeric characters +website_name_constraints = 2 to 40 lowercase alphanumeric characters error_field_required = This field is mandatory error_field_pattern = Invalid value error_field_maxlength = Value too long diff --git a/htdocs/translations/fr.lang b/htdocs/translations/fr.lang index ec7a7cb11c7693e8c5d26ea0db4e04e1052c87c9..f2a251a081d5e93083661c054786985da1768912 100644 --- a/htdocs/translations/fr.lang +++ b/htdocs/translations/fr.lang @@ -18,7 +18,7 @@ website_plugin_2 = Plugin 2 website_plugin_3 = Plugin 3 website_plugin_4 = Plugin 4 -website_name_constraints = 3 à 40 caractères alphanumériques minuscules +website_name_constraints = 2 à 40 caractères alphanumériques minuscules error_field_required = Ce champ est requis error_field_pattern = Valeur invalide error_field_maxlength = Valeur trop longue