Skip to content

Commit 7524c72

Browse files
authored
feat: (LAR-107) modification du formulaire de register (#206)
1 parent c17e96e commit 7524c72

File tree

4 files changed

+86
-14
lines changed

4 files changed

+86
-14
lines changed

lang/en/pages/auth.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
'page_title' => 'Create an account',
1717
'join_us' => 'Join Laravel Cameroon',
1818
'joins_description' => "Join nearly 1000 developers and designers. Because there's more to life than code.",
19-
'password_placeholder' => 'Password (min. 6 characters)',
19+
'password_placeholder' => 'Password (min. 8 characters)',
20+
'email_verification_status' => 'Please check your e-mail address to log in.',
2021
'submit' => 'Create account',
2122
'advantages' => [
2223
'heading' => 'Open your mind and discover new horizons.',

lang/fr/pages/auth.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
'page_title' => 'Créer un compte',
1717
'join_us' => 'Rejoindre Laravel Cameroun',
1818
'joins_description' => 'Rejoignez près de 1000 développeurs et designers. Parce qu’il n y’a pas que le code dans la vie.',
19-
'password_placeholder' => 'Mot de passe (min. 6 caractères)',
19+
'password_placeholder' => 'Mot de passe (min. 8 caractères)',
20+
'email_verification_status' => 'Veuillez verifier votre email pour pouvoir vous connecter',
2021
'submit' => 'Créer mon compte',
2122
'advantages' => [
2223
'heading' => 'Ouvrez votre esprit pour découvrir de nouveaux horizons.',

resources/views/livewire/pages/auth/register.blade.php

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,38 @@
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>
236
<x-container class="py-12 sm:py-16 lg:pt-20">
337
<div class="lg:grid lg:gap-12 lg:grid-cols-2">
438
<div class="hidden items-center justify-center lg:flex">
@@ -57,6 +91,7 @@
5791
</div>
5892
</div>
5993
</div>
94+
6095
<div class="mx-auto max-w-md space-y-8">
6196
<div class="space-y-3 text-center">
6297
<h2 class="font-heading text-3xl font-extrabold text-gray-900 dark:text-white">
@@ -67,51 +102,56 @@
67102
{{ __('pages/auth.register.joins_description') }}
68103
</p>
69104
</div>
105+
70106
<div>
71107
<x-status-message />
108+
109+
<x-validation-errors />
72110

73-
<form class="space-y-6" action="{{ route('register') }}" method="POST">
74-
@csrf
111+
<form wire:submit="register" class="space-y-6">
75112
<div class="space-y-3">
76113
<x-filament::input.wrapper>
77114
<x-filament::input
78115
type="text"
79116
id="name"
80-
name="name"
81-
required="true"
117+
wire:model="name"
118+
required
82119
autocomplete="name"
83120
aria-label="{{ __('validation.attributes.name') }}"
84121
:placeholder="__('validation.attributes.name')"
85122
/>
86123
</x-filament::input.wrapper>
124+
87125
<x-filament::input.wrapper>
88126
<x-filament::input
89127
type="email"
90128
id="email"
91-
name="email"
92-
required="true"
129+
wire:model="email"
130+
required
93131
autocomplete="email"
94132
aria-label="{{ __('validation.attributes.email') }}"
95133
:placeholder="__('validation.attributes.email')"
96134
/>
97135
</x-filament::input.wrapper>
136+
98137
<x-filament::input.wrapper>
99138
<x-filament::input
100139
type="text"
101140
id="username"
102-
name="username"
103-
required="true"
141+
wire:model="username"
142+
required
104143
autocomplete="username"
105144
aria-label="{{ __('validation.attributes.username') }}"
106145
:placeholder="__('validation.attributes.username')"
107146
/>
108147
</x-filament::input.wrapper>
148+
109149
<x-filament::input.wrapper>
110150
<x-filament::input
111151
type="password"
112152
id="password"
113-
name="password"
114-
required="true"
153+
wire:model="password"
154+
required
115155
aria-label="{{ __('validation.attributes.password') }}"
116156
:placeholder="__('pages/auth.register.password_placeholder')"
117157
/>
@@ -135,4 +175,4 @@
135175
</x-container>
136176

137177
<x-join-sponsors :title="__('global.sponsor_thanks')" />
138-
</x-app-layout>
178+
</div>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\Feature\Auth;
6+
7+
use Livewire\Volt\Volt;
8+
9+
test('registration screen can be rendered', function (): void {
10+
$response = $this->get('/register');
11+
12+
$response
13+
->assertOk()
14+
->assertSeeVolt('pages.auth.register');
15+
});
16+
17+
test('new users can register', function (): void {
18+
$component = Volt::test('pages.auth.register')
19+
->set('name', 'Test User')
20+
->set('email', '[email protected]')
21+
->set('password', 'password');
22+
23+
$component->call('register');
24+
25+
$this->assertGuest();
26+
27+
$this->assertSessionHas('status', __('pages/auth.register.email_verification_status'));
28+
29+
$this->assertAuthenticated();
30+
});

0 commit comments

Comments
 (0)