diff --git a/app/Http/ValidationRules/Account/BlackListRule.php b/app/Http/ValidationRules/Account/BlackListRule.php index 3845f7f9ce05..e2e13aa8a931 100644 --- a/app/Http/ValidationRules/Account/BlackListRule.php +++ b/app/Http/ValidationRules/Account/BlackListRule.php @@ -11,12 +11,13 @@ namespace App\Http\ValidationRules\Account; -use Illuminate\Contracts\Validation\Rule; +use Closure; +use Illuminate\Contracts\Validation\ValidationRule; /** * Class BlackListRule. */ -class BlackListRule implements Rule +class BlackListRule implements ValidationRule { private array $blacklist = [ 'secure-coinspot.com', @@ -3497,27 +3498,13 @@ class BlackListRule implements Rule 'zzz.com', ]; - /** - * @param string $attribute - * @param mixed $value - * @return bool - */ - public function passes($attribute, $value): bool + public function validate(string $attribute, mixed $value, Closure $fail): void { $parts = explode("@", $value); - if (is_array($parts)) { - return ! in_array($parts[1], $this->blacklist); - } else { - return true; + if (is_array($parts) && in_array($parts[1], $this->blacklist)) { + $fail('This domain is blacklisted, if you think this is in error, please email contact@invoiceninja.com'); } } - /** - * @return string - */ - public function message(): string - { - return 'This domain is blacklisted, if you think this is in error, please email contact@invoiceninja.com'; - } } diff --git a/tests/Unit/ValidationRules/BlacklistValidationTest.php b/tests/Unit/ValidationRules/BlacklistValidationTest.php index 1a6b54a41435..806f16232fc3 100644 --- a/tests/Unit/ValidationRules/BlacklistValidationTest.php +++ b/tests/Unit/ValidationRules/BlacklistValidationTest.php @@ -52,4 +52,32 @@ class BlacklistValidationTest extends TestCase $v = $this->app['validator']->make($data, $rules); $this->assertFalse($v->passes()); } + + public function testInValidEmailRule2() + { + $rules = [ + 'email' => [new BlackListRule], + ]; + + $data = [ + 'email' => 'jimmy@zzz.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertFalse($v->passes()); + } + + public function testInValidEmailRule3() + { + $rules = [ + 'email' => [new BlackListRule], + ]; + + $data = [ + 'email' => 'jimmy@gmail.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertTrue($v->passes()); + } }