diff --git a/assets/entrepot/pages/service/metadatas/metadatas-validation-tr.ts b/assets/entrepot/pages/service/metadatas/metadatas-validation-tr.ts index c2a7ff61..68f01771 100644 --- a/assets/entrepot/pages/service/metadatas/metadatas-validation-tr.ts +++ b/assets/entrepot/pages/service/metadatas/metadatas-validation-tr.ts @@ -35,7 +35,8 @@ export const { i18n } = declareComponentKeys< export const ValidationMetadatasFrTranslations: Translations<"fr">["ValidationMetadatas"] = { "metadatas.technical_name_error": "Le nom technique est obligatoire", - "metadatas.technical_name_regex": "Le nom technique ne doit contenir que des lettres, chiffres, tirets (-), underscores (_), ou points (.)", + "metadatas.technical_name_regex": + "Le nom technique doit commencer par une lettre ou un underscore et ne doit contenir que des lettres, chiffres, tirets (-), underscores (_), ou points (.)", "metadatas.technical_name_unicity_error": "Ce nom technique existe déjà", "metadatas.public_name_error": "L’intitulé (nom public) est obligatoire", "metadatas.description_error": "Un résumé est obligatoire", @@ -60,7 +61,8 @@ export const ValidationMetadatasFrTranslations: Translations<"fr">["ValidationMe export const ValidationMetadatasEnTranslations: Translations<"en">["ValidationMetadatas"] = { "metadatas.technical_name_error": "Technical name is required", - "metadatas.technical_name_regex": "Technical name must contain only letters, numbers, hyphens (-), underscores (_), or dots (.)", + "metadatas.technical_name_regex": + "Technical name must start with a letter or an underscore and must contain only letters, numbers, hyphens (-), underscores (_), or dots (.)", "metadatas.technical_name_unicity_error": "This technical name already exists", "metadatas.public_name_error": "Title (public name) is required", "metadatas.description_error": "A summary is required", diff --git a/assets/utils.ts b/assets/utils.ts index dcc79148..6e1e0e33 100644 --- a/assets/utils.ts +++ b/assets/utils.ts @@ -88,7 +88,7 @@ const regex = { datasheet_name: /^[\wÀ-ÿ\-._~!$&'()*+,;:@%\s]+$/g, // alphanumérique avec accents, certains caractères spéciaux, espaces blancs // file_identifier: /^[\wÀ-ÿ\-._~!$&'()*+,;:@%]+$/g, // alphanumérique avec accents, certains caractères spéciaux file_identifier: /^[\w-.]+$/g, // alphanumérique sans accents, certains caractères spéciaux - technical_name: /^[\w-.]+$/, + technical_name: /^[A-Za-z_][A-Za-z0-9_.-]*$/, // chaîne alphanumérique qui commence par une lettre ou un underscore et ne doit contenir que des lettres, chiffres, tirets (-), underscores (_), ou points (.) email: /^[\w-.]+@([\w-]+\.)+[\w-]{2,}$/, uuid: /^[A-F\d]{8}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{12}$/i, }; diff --git a/src/Dto/CommonDTO.php b/src/Dto/CommonDTO.php index 70183e8e..e14fda07 100644 --- a/src/Dto/CommonDTO.php +++ b/src/Dto/CommonDTO.php @@ -8,7 +8,7 @@ class CommonDTO { public function __construct( #[Assert\NotBlank(['message' => 'metadatas.technical_name_error'])] - #[Assert\Regex(['pattern' => '/^[\w\-\.]+$/', 'message' => 'metadatas.technical_name_regex'])] + #[Assert\Regex(['pattern' => '/^[A-Za-z_][A-Za-z0-9_.-]*$/', 'message' => 'metadatas.technical_name_regex'])] public readonly string $technical_name, #[Assert\NotBlank(['message' => 'metadatas.public_name_error'])] @@ -68,7 +68,7 @@ public function __construct( 'choices' => ['all_public', 'your_community'], // TODO NON EXHAUSTIF 'message' => 'metadatas.share_with_error', ])] - public readonly string $share_with + public readonly string $share_with, ) { } }