Fixes for unique email rule

This commit is contained in:
David Bomba 2019-06-05 10:43:23 +10:00
parent fabc45d162
commit 671760eda4
5 changed files with 31 additions and 6 deletions

View File

@ -114,7 +114,7 @@ class UserController extends BaseController
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(UpdateUserRequest $request)
public function update(UpdateUserRequest $request, User $user)
{
//
}

View File

@ -12,6 +12,7 @@
namespace App\Http\Requests\User;
use App\Http\Requests\Request;
use App\Http\ValidationRules\UniqueUserRule;
class UpdateUserRequest extends Request
{
@ -31,10 +32,13 @@ class UpdateUserRequest extends Request
public function rules()
{
$input = $this->all();
return [
'first_name' => 'required|string|max:100',
'last_name' => 'required|string:max:100',
'email' => new UniqueUserRule(),
'email' => ['required', new UniqueUserRule($this->user, $input['email'])],
];
}

View File

@ -22,6 +22,18 @@ use Illuminate\Contracts\Validation\Rule;
class UniqueUserRule implements Rule
{
public $user;
public $new_email;
public function __construct($user, $new_email)
{
$this->user= $user;
$this->new_email = $new_email;
}
/**
* @param string $attribute
* @param mixed $value
@ -29,7 +41,12 @@ class UniqueUserRule implements Rule
*/
public function passes($attribute, $value)
{
return ! $this->checkIfEmailExists($value); //if it exists, return false!
/* If the input has not changed, return early! */
if($this->user->email == $this->new_email)
return true;
else
return ! $this->checkIfEmailExists($value); //if it exists, return false!
}
/**

View File

@ -91,10 +91,10 @@ class EventServiceProvider extends ServiceProvider
*
* @return void
*/
public function boot(DispatcherContract $events)
public function boot()
{
parent::boot($events);
parent::boot();
}
}

View File

@ -43,10 +43,14 @@ class RouteServiceProvider extends ServiceProvider
Route::bind('client', function ($value) {
$client = \App\Models\Client::withTrashed()->where('id', $this->decodePrimaryKey($value))->firstOrFail();
// $client->with('contacts', 'primary_contact','country');
return $client;
});
Route::bind('user', function ($value) {
$user = \App\Models\User::withTrashed()->where('id', $this->decodePrimaryKey($value))->firstOrFail();
return $user;
});
Route::bind('invoice', function ($value) {
return \App\Models\Invoice::withTrashed()->where('id', $this->decodePrimaryKey($value))->firstOrFail();
});