use App\Models\Role;
use App\Models\User;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Validation\Rule;
use Livewire\Component;
class EditUserComponent extends Component
{
use HasLivewireAuth;
public User $user;
public $roles;
public function mount()
{
if ($this->user->isHimself(auth()->user())) {
throw new AuthorizationException();
}
}
public function render()
{
$this->roles = Role::orderBy('name')->get();
return view('users.edit')
->extends('layouts.app');
}
public function update()
{
$this->validate($this->rules());
$this->user->save();
msg_success('User has been successfully updated.');
return redirect()->route('users.index');
}
protected function rules()
{
return [
'user.email' => [
'required',
'email',
Rule::unique('users', 'email')->ignore($this->user->id),
],
'user.role_id' => [
'required',
'exists:roles,id',
],
];
}
}