暂存
This commit is contained in:
+86
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Validation\Rules;
|
||||
|
||||
use Illuminate\Contracts\Validation\Rule;
|
||||
use Illuminate\Contracts\Validation\ValidatorAwareRule;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class Can implements Rule, ValidatorAwareRule
|
||||
{
|
||||
/**
|
||||
* The ability to check.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $ability;
|
||||
|
||||
/**
|
||||
* The arguments to pass to the authorization check.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $arguments;
|
||||
|
||||
/**
|
||||
* The current validator instance.
|
||||
*
|
||||
* @var \Illuminate\Validation\Validator
|
||||
*/
|
||||
protected $validator;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $ability
|
||||
* @param array $arguments
|
||||
*/
|
||||
public function __construct($ability, array $arguments = [])
|
||||
{
|
||||
$this->ability = $ability;
|
||||
$this->arguments = $arguments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the validation rule passes.
|
||||
*
|
||||
* @param string $attribute
|
||||
* @param mixed $value
|
||||
* @return bool
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
$arguments = $this->arguments;
|
||||
|
||||
$model = array_shift($arguments);
|
||||
|
||||
return Gate::allows($this->ability, array_filter([$model, ...$arguments, $value]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation error message.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function message()
|
||||
{
|
||||
$message = $this->validator->getTranslator()->get('validation.can');
|
||||
|
||||
return $message === 'validation.can'
|
||||
? ['The :attribute field contains an unauthorized value.']
|
||||
: $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current validator.
|
||||
*
|
||||
* @param \Illuminate\Validation\Validator $validator
|
||||
* @return $this
|
||||
*/
|
||||
public function setValidator($validator)
|
||||
{
|
||||
$this->validator = $validator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user