1
- <x-app-layout :title =" __('pages/auth.register.page_title')" >
1
+ <?php
2
+
3
+ use App\Models\ User ;
4
+ use Illuminate\Auth\Events\ Registered ;
5
+ use Illuminate\Support\Facades\ Hash ;
6
+ use Livewire\Volt\ Component ;
7
+ use Illuminate\Validation\Rules\ Password ;
8
+
9
+ new class extends Component
10
+ {
11
+ public string $name = ' ' ;
12
+ public string $email = ' ' ;
13
+ public string $username = ' ' ;
14
+ public string $password = ' ' ;
15
+
16
+ public function register (): void
17
+ {
18
+ $validated = $this -> validate ([
19
+ ' name' => [' required' , ' string' , ' max:255' ],
20
+ ' email' => [' required' , ' string' , ' lowercase' , ' email' , ' max:255' , ' unique:users' ],
21
+ ' username' => [' required' , ' string' , ' max:255' , ' unique:users' ],
22
+ ' password' => [' required' , ' string' , Password:: min (8 )
23
+ -> uncompromised ()
24
+ -> numbers ()
25
+ -> mixedCase ()],
26
+ ]);
27
+
28
+ $validated [' password' ] = Hash:: make ($validated [' password' ]);
29
+
30
+ event (new Registered (User:: create ($validated )));
31
+
32
+ session ()-> flash (' status' , __ (' pages/auth.register.email_verification_status' ));
33
+ }
34
+ }; ? >
35
+ <div >
2
36
<x-container class =" py-12 sm:py-16 lg:pt-20" >
3
37
<div class =" lg:grid lg:gap-12 lg:grid-cols-2" >
4
38
<div class =" hidden items-center justify-center lg:flex" >
57
91
</div >
58
92
</div >
59
93
</div >
94
+
60
95
<div class =" mx-auto max-w-md space-y-8" >
61
96
<div class =" space-y-3 text-center" >
62
97
<h2 class =" font-heading text-3xl font-extrabold text-gray-900 dark:text-white" >
67
102
{{ __ (' pages/auth.register.joins_description' ) } }
68
103
</p >
69
104
</div >
105
+
70
106
<div >
71
107
<x-status-message />
108
+
109
+ <x-validation-errors />
72
110
73
- <form class =" space-y-6" action =" {{ route (' register' ) } }" method =" POST" >
74
- @csrf
111
+ <form wire:submit =" register" class =" space-y-6" >
75
112
<div class =" space-y-3" >
76
113
<x-filament::input .wrapper >
77
114
<x-filament::input
78
115
type =" text"
79
116
id =" name"
80
- name =" name"
81
- required = " true "
117
+ wire:model =" name"
118
+ required
82
119
autocomplete =" name"
83
120
aria-label =" {{ __ (' validation.attributes.name' ) } }"
84
121
:placeholder =" __('validation.attributes.name')"
85
122
/>
86
123
</x-filament::input .wrapper >
124
+
87
125
<x-filament::input .wrapper >
88
126
<x-filament::input
89
127
type =" email"
90
128
id =" email"
91
- name =" email"
92
- required = " true "
129
+ wire:model =" email"
130
+ required
93
131
autocomplete =" email"
94
132
aria-label =" {{ __ (' validation.attributes.email' ) } }"
95
133
:placeholder =" __('validation.attributes.email')"
96
134
/>
97
135
</x-filament::input .wrapper >
136
+
98
137
<x-filament::input .wrapper >
99
138
<x-filament::input
100
139
type =" text"
101
140
id =" username"
102
- name =" username"
103
- required = " true "
141
+ wire:model =" username"
142
+ required
104
143
autocomplete =" username"
105
144
aria-label =" {{ __ (' validation.attributes.username' ) } }"
106
145
:placeholder =" __('validation.attributes.username')"
107
146
/>
108
147
</x-filament::input .wrapper >
148
+
109
149
<x-filament::input .wrapper >
110
150
<x-filament::input
111
151
type =" password"
112
152
id =" password"
113
- name =" password"
114
- required = " true "
153
+ wire:model =" password"
154
+ required
115
155
aria-label =" {{ __ (' validation.attributes.password' ) } }"
116
156
:placeholder =" __('pages/auth.register.password_placeholder')"
117
157
/>
135
175
</x-container >
136
176
137
177
<x-join-sponsors :title =" __('global.sponsor_thanks')" />
138
- </x-app-layout >
178
+ </div >
0 commit comments