Convest rule to validationrule

This commit is contained in:
David Bomba 2023-12-26 13:51:37 +11:00
parent 429bcf51b9
commit 3e4cf6f261
2 changed files with 34 additions and 19 deletions

View File

@ -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';
}
}

View File

@ -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());
}
}