|
@@ -5,6 +5,7 @@ namespace App\Http\Requests;
|
|
|
use App\Enums\GenderEnum;
|
|
use App\Enums\GenderEnum;
|
|
|
use App\Enums\LanguageEnum;
|
|
use App\Enums\LanguageEnum;
|
|
|
use App\Enums\UserTypeEnum;
|
|
use App\Enums\UserTypeEnum;
|
|
|
|
|
+use App\Models\User;
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
use Illuminate\Validation\Rule;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
|
|
|
@@ -19,7 +20,9 @@ class UserRequest extends FormRequest
|
|
|
'email' => [
|
|
'email' => [
|
|
|
'sometimes',
|
|
'sometimes',
|
|
|
'email',
|
|
'email',
|
|
|
- Rule::unique('users', 'email')->ignore($this->route('id')),
|
|
|
|
|
|
|
+ Rule::unique('users', 'email')
|
|
|
|
|
+ ->where('type', $this->emailUniqueType())
|
|
|
|
|
+ ->ignore($this->route('id')),
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
'password' => 'sometimes|string|nullable',
|
|
'password' => 'sometimes|string|nullable',
|
|
@@ -31,8 +34,12 @@ class UserRequest extends FormRequest
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
if ($this->isMethod('post')) {
|
|
if ($this->isMethod('post')) {
|
|
|
- $rules['name'] = 'required|string|max:255';
|
|
|
|
|
- $rules['email'] = 'required|email|unique:users,email';
|
|
|
|
|
|
|
+ $rules['name'] = 'required|string|max:255';
|
|
|
|
|
+ $rules['email'] = [
|
|
|
|
|
+ 'required',
|
|
|
|
|
+ 'email',
|
|
|
|
|
+ Rule::unique('users', 'email')->where('type', $this->emailUniqueType()),
|
|
|
|
|
+ ];
|
|
|
$rules['password'] = 'required|string|min:6';
|
|
$rules['password'] = 'required|string|min:6';
|
|
|
|
|
|
|
|
if (! $this->has('language')) {
|
|
if (! $this->has('language')) {
|
|
@@ -42,4 +49,20 @@ class UserRequest extends FormRequest
|
|
|
|
|
|
|
|
return $rules;
|
|
return $rules;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private function emailUniqueType(): string
|
|
|
|
|
+ {
|
|
|
|
|
+ if ($this->filled('type')) {
|
|
|
|
|
+ return $this->input('type');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $id = $this->route('id');
|
|
|
|
|
+ $type = $id ? User::query()->whereKey($id)->value('type') : null;
|
|
|
|
|
+
|
|
|
|
|
+ if ($type instanceof UserTypeEnum) {
|
|
|
|
|
+ $type = $type->value;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return $type ?? UserTypeEnum::USER->value;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|