Allow port rule to be optional

This commit is contained in:
Lance Pioch 2024-07-01 15:12:03 -04:00
parent 4273880126
commit c45e4edcf6

View File

@ -8,26 +8,30 @@ use Illuminate\Contracts\Validation\ValidationRule;
class Port implements ValidationRule
{
/**
* Run the validation rule.
*
* @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
// Allow port to be optional
if (empty($value)) {
return;
}
// Require port to be a number
if (!is_numeric($value)) {
$fail('The :attribute must be numeric.');
}
// Require port to be an integer
$value = intval($value);
if (floatval($value) !== (float) $value) {
$fail('The :attribute must be an integer.');
}
// Require minimum valid port
if ($value <= Endpoint::PORT_FLOOR) {
$fail('The :attribute must be greater than 1024.');
}
// Require maximum valid port
if ($value > Endpoint::PORT_CEIL) {
$fail('The :attribute must be less than 65535.');
}