Nexus-InglineSystems/app/Livewire/Admin/CreateUser.php

66 lines
1.8 KiB
PHP

<?php
namespace App\Livewire\Admin;
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 bool $permissions = false;
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|boolean'
];
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' => 'Defina o nível de autorização do usuário.',
];
public function createUser(UserService $userService)
{
$validated = $this->validate($this->rules, $this->messages);
if ($validated['permissions'] === true) {
$validated['permissions'] = array('admin');
} else {
$validated['permissions'] = array('user');
}
try {
$this->authorize('createUser', Auth::user());
$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());
}
}
public function render()
{
return view('livewire.admin.create-user');
}
}