feat: verify email

This commit is contained in:
Leon Morival 2026-04-29 09:44:14 +02:00
parent 3f6dbe1c55
commit 9f2d478213
4 changed files with 34 additions and 1 deletions

View File

@ -59,6 +59,12 @@ class AuthController extends Controller
]); ]);
} }
if (! $user->hasVerifiedEmail()) {
throw ValidationException::withMessages([
'email' => [__('auth.email_not_verified')],
]);
}
$token = $user->createToken( $token = $user->createToken(
$this->resolveDeviceName($data) $this->resolveDeviceName($data)
)->plainTextToken; )->plainTextToken;

View File

@ -19,6 +19,8 @@ return [
'logout_success' => 'You have been deconnecte', 'logout_success' => 'You have been deconnecte',
'email_verified' => 'Email address verified.', 'email_verified' => 'Email address verified.',
'email_already_verified' => 'Email address already verified.', 'email_already_verified' => 'Email address already verified.',
'email_not_verified' => 'Please verify your email address before logging in.',
'email_verification_sent' => 'Verification link sent.', 'email_verification_sent' => 'Verification link sent.',
'soft_delete_success' => 'Your Account has been successfully deleted.',
]; ];

View File

@ -16,9 +16,11 @@ return [
'failed' => 'Impossible de vous connecter', 'failed' => 'Impossible de vous connecter',
'password' => 'Email ou mot de passe incorrect', 'password' => 'Email ou mot de passe incorrect',
'throttle' => 'Trop de tentatives veuillez reessayer dans :seconds seconds.', 'throttle' => 'Trop de tentatives veuillez reessayer dans :seconds seconds.',
'logout_success' => 'Vous êtes bien déconnecté', 'logout_success' => 'Vous êtes bien déconnecté.',
'email_verified' => 'Adresse email vérifiée.', 'email_verified' => 'Adresse email vérifiée.',
'email_already_verified' => 'Adresse email déjà vérifiée.', 'email_already_verified' => 'Adresse email déjà vérifiée.',
'email_not_verified' => 'Veuillez vérifier votre adresse email avant de vous connecter.',
'email_verification_sent' => 'Lien de vérification envoyé.', 'email_verification_sent' => 'Lien de vérification envoyé.',
'soft_delete_success' => 'Votre compte à bien été supprimé.',
]; ];

View File

@ -0,0 +1,23 @@
<?php
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
it('prevents unverified users from logging in', function () {
$user = User::factory()->unverified()->create([
'password' => 'password',
]);
$response = $this->postJson('/api/auth/login', [
'email' => $user->email,
'password' => 'password',
]);
$response
->assertUnprocessable()
->assertJsonValidationErrors([
'email' => __('auth.email_not_verified'),
]);
});