From 5b43cb6f5aef0ff5816de0391c1cdaf797dc7224 Mon Sep 17 00:00:00 2001 From: Ondrej Vlach Date: Wed, 7 Aug 2024 13:48:07 +0200 Subject: [PATCH] fix(rules): datetime class accept invalid dates --- app/Rules/DateYMD.php | 5 +++++ app/Rules/DateYMDHI.php | 5 +++++ app/Rules/DateYMDHIS.php | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/app/Rules/DateYMD.php b/app/Rules/DateYMD.php index eb39492..8c5a84a 100644 --- a/app/Rules/DateYMD.php +++ b/app/Rules/DateYMD.php @@ -20,5 +20,10 @@ public function validate(string $attribute, mixed $value, Closure $fail): void if (\DateTimeImmutable::createFromFormat("Y-m-d", $value) === false) { $fail('validation.format.date_ymd'); } + // DateTime accept dates such as 2021-31-55 + $errors = \DateTimeImmutable::getLastErrors(); + if (!empty($errors['warning_count'])) { + $fail('validation.date_ymdhi'); + } } } diff --git a/app/Rules/DateYMDHI.php b/app/Rules/DateYMDHI.php index ecb40f4..c8f3692 100644 --- a/app/Rules/DateYMDHI.php +++ b/app/Rules/DateYMDHI.php @@ -20,5 +20,10 @@ public function validate(string $attribute, mixed $value, Closure $fail): void if (\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $value . ":00") === false) { $fail('validation.date_ymdhi'); } + // DateTime accept dates such as 2021-31-55 + $errors = \DateTimeImmutable::getLastErrors(); + if (!empty($errors['warning_count'])) { + $fail('validation.date_ymdhi'); + } } } diff --git a/app/Rules/DateYMDHIS.php b/app/Rules/DateYMDHIS.php index 1cf2aea..8a1da08 100644 --- a/app/Rules/DateYMDHIS.php +++ b/app/Rules/DateYMDHIS.php @@ -20,5 +20,10 @@ public function validate(string $attribute, mixed $value, Closure $fail): void if (\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $value) === false) { $fail('validation.date_ymdhis'); } + // DateTime accept dates such as 2021-31-55 + $errors = \DateTimeImmutable::getLastErrors(); + if (!empty($errors['warning_count'])) { + $fail('validation.date_ymdhi'); + } } }