-
Notifications
You must be signed in to change notification settings - Fork 39
/
Copy pathCreateUserComponent.php
79 lines (66 loc) · 1.66 KB
/
CreateUserComponent.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
namespace App\Http\Livewire;
use App\Mail\InvitationMail;
use App\Models\Role;
use App\Models\User;
use App\Providers\AppServiceProvider;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Mail;
use Illuminate\Validation\Rule;
use Livewire\Component;
class CreateUserComponent extends Component
{
use HasLivewireAuth;
/** @var \App\Models\User */
public $user;
/** @var \Illuminate\Database\Eloquent\Collection */
public $roles;
/**
* Render the component view.
*
* @return \Illuminate\View\View
*/
public function render()
{
$this->roles = Role::orderBy('name')->get();
return view('users.create')
->extends('layouts.app');
}
/**
* Store new user.
*
* @return \Illuminate\Http\Response
*/
public function store()
{
$this->validate();
$user = User::create([
'email' => $this->user['email'],
'role_id' => $this->user['role_id'],
AppServiceProvider::OWNER_FIELD => auth()->id(),
]);
msg_success('User has been successfully created.');
Mail::to($user)
->queue(new InvitationMail($user, Carbon::tomorrow()));
return redirect()->route('users.index');
}
/**
* Validation rules.
*
* @return array
*/
protected function rules()
{
return [
'user.email' => [
'required',
'email',
Rule::unique('users', 'email'),
],
'user.role_id' => [
'required',
Rule::exists('roles', 'id'),
],
];
}
}