60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Admin\User;
|
|
|
|
use App\Services\UserService;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Livewire\Component;
|
|
|
|
class CreateUser extends Component
|
|
{
|
|
public string $name = '';
|
|
public string $email = '';
|
|
public string $password = '';
|
|
public string $password_confirm = '';
|
|
public string $permissions = '';
|
|
|
|
protected $rules = [
|
|
'name' => 'required|string|max:255',
|
|
'email' => 'required|email|unique:users,email',
|
|
'password' => 'required|string|min:8',
|
|
'password_confirm' => 'required|string|same:password',
|
|
'permissions' => 'required|string|in:user,admin'
|
|
];
|
|
|
|
protected $messages = [
|
|
'name' => 'Nome precisa ser informado.',
|
|
'email' => 'O email precisa ser informado.',
|
|
'email.unique' => 'O email informado já foi cadastrado anteriormente.',
|
|
'password' => 'A senha precisa ter 8 ou mais caracteres.',
|
|
'password_confirm' => 'As senhas não coincidem.',
|
|
'permissions' => 'Escolha o nível de autorização do usuário.'
|
|
];
|
|
|
|
public function createUser(UserService $userService)
|
|
{
|
|
|
|
try {
|
|
$this->authorize('createUser', Auth::user());
|
|
$validated = $this->validate($this->rules, $this->messages);
|
|
|
|
$user = $userService->createUser($validated);
|
|
|
|
|
|
$this->reset();
|
|
|
|
$this->dispatch('user-created');
|
|
|
|
$this->dispatch('notify', message: 'Usuário cadastrado com sucesso!');
|
|
} catch (\Exception $e) {
|
|
$this->addError('general', $e->getMessage());
|
|
$this->dispatch('notify', message: 'Ocorreu um erro ao criar o usuário. ' . $e->getMessage(), type: 'error');
|
|
}
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.admin.users.create-user');
|
|
}
|
|
}
|