feat: allow more characters when validating

- allow more characters in the name and description validation, while still not allowing any unsafe characters
This commit is contained in:
peaklabs-dev
2026-01-05 13:14:27 +01:00
parent 4e861a19b4
commit 4021c8ac2f

View File

@@ -8,16 +8,14 @@ namespace App\Support;
class ValidationPatterns class ValidationPatterns
{ {
/** /**
* Pattern for names (allows letters, numbers, spaces, dashes, underscores, dots, slashes, colons, parentheses) * Pattern for names excluding all dangerous characters
* Matches CleanupNames::sanitizeName() allowed characters */
*/ public const NAME_PATTERN = '/^[\p{L}\p{M}\p{N}\s\-_.]+$/u';
public const NAME_PATTERN = '/^[a-zA-Z0-9\s\-_.:\/()]+$/';
/** /**
* Pattern for descriptions (allows more characters including quotes, commas, etc.) * Pattern for descriptions excluding all dangerous characters with some additional allowed characters
* More permissive than names but still restricts dangerous characters
*/ */
public const DESCRIPTION_PATTERN = '/^[a-zA-Z0-9\s\-_.:\/()\'\",.!?@#%&+=\[\]{}|~`*]+$/'; public const DESCRIPTION_PATTERN = '/^[\p{L}\p{M}\p{N}\s\-_.,!?()\'\"+=*]+$/u';
/** /**
* Get validation rules for name fields * Get validation rules for name fields
@@ -66,7 +64,7 @@ class ValidationPatterns
public static function nameMessages(): array public static function nameMessages(): array
{ {
return [ return [
'name.regex' => 'The name may only contain letters, numbers, spaces, dashes (-), underscores (_), dots (.), slashes (/), colons (:), and parentheses ().', 'name.regex' => "The name may only contain letters (including Unicode), numbers, spaces, dashes (-), underscores (_) and dots (.).",
'name.min' => 'The name must be at least :min characters.', 'name.min' => 'The name must be at least :min characters.',
'name.max' => 'The name may not be greater than :max characters.', 'name.max' => 'The name may not be greater than :max characters.',
]; ];
@@ -78,12 +76,12 @@ class ValidationPatterns
public static function descriptionMessages(): array public static function descriptionMessages(): array
{ {
return [ return [
'description.regex' => 'The description contains invalid characters. Only letters, numbers, spaces, and common punctuation (- _ . : / () \' " , ! ? @ # % & + = [] {} | ~ ` *) are allowed.', 'description.regex' => "The description may only contain letters (including Unicode), numbers, spaces, and common punctuation (- _ . , ! ? ( ) ' \" + = *).",
'description.max' => 'The description may not be greater than :max characters.', 'description.max' => 'The description may not be greater than :max characters.',
]; ];
} }
/** /**
* Get combined validation messages for both name and description fields * Get combined validation messages for both name and description fields
*/ */
public static function combinedMessages(): array public static function combinedMessages(): array