remove usernames

This commit is contained in:
2023-05-08 10:40:48 +10:00
parent 7a4f72378d
commit ac2dd23ad7
43 changed files with 372 additions and 864 deletions

View File

@@ -3,9 +3,18 @@
namespace App\Http\Requests;
use Illuminate\Validation\Rule;
use App\Rules\Uniqueish;
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
*
@@ -14,11 +23,10 @@ class UserRequest extends BaseRequest
public function postRules()
{
return [
'username' => 'required|string|max:255|min:4|unique:users',
'first_name' => 'required|string|max:255|min:2',
'last_name' => 'required|string|max:255|min:2',
'display_name' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'display_name' => 'required|string|max:255|uniqueish:users',
'email' => 'required|string|email|max:255|unique:users',
'phone' => ['string', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
'email_verified_at' => 'date'
];
@@ -33,24 +41,32 @@ class UserRequest extends BaseRequest
{
$user = $this->route('user');
$required_with_all = count($this->required_with_all) > 0 ? 'required_with_all:' . implode(',', $this->required_with_all) : '';
return [
'username' => [
'first_name' => "nullable|string|required_if_any:users,last_name,display_name,phone,password|between:2,255",
'last_name' => "nullable|required_if_any:users,first_name,display_name,phone,password|string|max:255|min:2",
'display_name' => [
'nullable',
'required_if_any:users,first_name,last_name,phone,password',
'string',
'max:255',
'min:4',
'min:2',
(new Uniqueish('users', 'display_name'))->ignore($user->id),
],
'email' => [
'string',
'email',
'max:255',
Rule::unique('users')->ignore($user->id)->when(
$this->username !== $user->username,
$this->email !== $user->email,
function ($query) {
return $query->where('username', $this->username);
return $query->where('email', $this->email);
}
),
],
'first_name' => 'string|max:255|min:2',
'last_name' => 'string|max:255|min:2',
'display_name' => 'string|max:255|min:2',
'email' => 'string|email|max:255',
'phone' => ['nullable','regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
'password' => 'string|min:8'
'phone' => ['nullable', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'],
'password' => "nullable|{$required_with_all}|string|min:8"
];
}
}