updated rules
This commit is contained in:
@@ -2,19 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Http\Requests;
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use App\Rules\RequiredIfAny;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
use App\Rules\Uniqueish;
|
use App\Rules\Uniqueish;
|
||||||
|
|
||||||
class UserRequest extends BaseRequest
|
class UserRequest extends BaseRequest
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Fields that are required unless all are null.
|
|
||||||
*
|
|
||||||
* @var string[]
|
|
||||||
*/
|
|
||||||
protected $required_with_all = ['first_name','last_name','display_name','phone'];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply the additional POST base rules to this request
|
* Apply the additional POST base rules to this request
|
||||||
*
|
*
|
||||||
@@ -22,10 +15,18 @@ class UserRequest extends BaseRequest
|
|||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules()
|
||||||
{
|
{
|
||||||
|
$user = auth()->user();
|
||||||
|
$isAdminUser = $user->hasPermission('admin/users');
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'first_name' => 'required|string|max:255|min:2',
|
'first_name' => ($isAdminUser === true ? 'required_with:last_name,display_name,phone' : 'required') . '|string|max:255|min:2',
|
||||||
'last_name' => 'required|string|max:255|min:2',
|
'last_name' => ($isAdminUser === true ? 'required_with:first_name,display_name,phone' : 'required') . '|string|max:255|min:2',
|
||||||
'display_name' => 'required|string|max:255|uniqueish:users',
|
'display_name' => [
|
||||||
|
$isAdminUser === true ? 'required_with:first_name,last_name,phone' : 'required',
|
||||||
|
'string',
|
||||||
|
'max:255',
|
||||||
|
new Uniqueish('users')
|
||||||
|
],
|
||||||
'email' => 'required|string|email|max:255|unique:users',
|
'email' => 'required|string|email|max:255|unique:users',
|
||||||
'phone' => ['string', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
|
'phone' => ['string', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
|
||||||
'email_verified_at' => 'date'
|
'email_verified_at' => 'date'
|
||||||
@@ -39,34 +40,36 @@ class UserRequest extends BaseRequest
|
|||||||
*/
|
*/
|
||||||
public function putRules()
|
public function putRules()
|
||||||
{
|
{
|
||||||
$user = $this->route('user');
|
$user = auth()->user();
|
||||||
|
$ruleUser = $this->route('user');
|
||||||
$required_with_all = count($this->required_with_all) > 0 ? 'required_with_all:' . implode(',', $this->required_with_all) : '';
|
$isAdminUser = $user->hasPermission('admin/users');
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'first_name' => "nullable|string|required_if_any:users,last_name,display_name,phone,password|between:2,255",
|
'first_name' => [
|
||||||
'last_name' => "nullable|required_if_any:users,first_name,display_name,phone,password|string|max:255|min:2",
|
$isAdminUser === true ? 'required_with:last_name,display_name,phone' : 'required',
|
||||||
'display_name' => [
|
|
||||||
'nullable',
|
|
||||||
'required_if_any:users,first_name,last_name,phone,password',
|
|
||||||
'string',
|
'string',
|
||||||
'max:255',
|
'between:2,255',
|
||||||
'min:2',
|
],
|
||||||
(new Uniqueish('users', 'display_name'))->ignore($user->id),
|
'last_name' => $isAdminUser === true ? 'required_with:first_name,display_name,phone|string|between:2,255' : 'required|string|between:2,255',
|
||||||
|
'display_name' => [
|
||||||
|
$isAdminUser === true ? 'required_with:first_name,last_name,phone' : 'required',
|
||||||
|
'string',
|
||||||
|
'between:2,255',
|
||||||
|
(new Uniqueish('users', 'display_name'))->ignore($ruleUser->id)
|
||||||
],
|
],
|
||||||
'email' => [
|
'email' => [
|
||||||
'string',
|
'string',
|
||||||
'email',
|
'email',
|
||||||
'max:255',
|
'max:255',
|
||||||
Rule::unique('users')->ignore($user->id)->when(
|
Rule::unique('users')->ignore($ruleUser->id)->when(
|
||||||
$this->email !== $user->email,
|
$this->email !== $ruleUser->email,
|
||||||
function ($query) {
|
function ($query) {
|
||||||
return $query->where('email', $this->email);
|
return $query->where('email', $this->email);
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
'phone' => ['nullable', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
|
'phone' => ['nullable', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
|
||||||
'password' => "nullable|{$required_with_all}|string|min:8"
|
'password' => "nullable|string|min:8"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user