Refactor validation rules to implement the new ValidationRule interface (#249)

This commit is contained in:
Manuel Christlieb
2024-07-03 00:20:07 +02:00
committed by GitHub
parent 11e3b167cc
commit 3d67153912
4 changed files with 35 additions and 61 deletions

View File

@ -2,35 +2,21 @@
namespace App\ValidationRules;
use Illuminate\Contracts\Validation\Rule;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use phpseclib3\Crypt\PublicKeyLoader;
use phpseclib3\Exception\NoKeyLoadedException;
class SshKeyRule implements Rule
class SshKeyRule implements ValidationRule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
public function validate(string $attribute, mixed $value, Closure $fail): void
{
try {
PublicKeyLoader::load($value);
return true;
} catch (NoKeyLoadedException $e) {
return false;
return;
} catch (NoKeyLoadedException) {
$fail('Invalid key')->translate();
}
}
/**
* @return array|\Illuminate\Contracts\Translation\Translator|string|null
*/
public function message()
{
return __('Invalid key');
}
}