Je veux utiliser Laravel Fortify et Livewire pour créer un formulaire de connexion très simple. Je ne veux pas utiliser Jetstream car il a plus de fonctionnalités dont je n'ai pas besoin par rapport à celles dont j'ai besoin.
J'utilise Livewire dans toute mon application et j'aimerais l'utiliser pour ma page de connexion afin de fournir une validation en temps réel instantanée.
Le problème que je rencontre est que je ne peux pas soumettre le formulaire avec des valeurs si j'utilise wire:model
sur les inputs.
Je ne peux pas non plus utiliser auth()->attempt()
car il est détourné par Fortify.(Au moins, je pense que c'est le cas. Tout ce que je sais, c'est que lorsque je l'utilise, il retourne false
)
Comment puis-je utiliser livewire avec Fortify? J'ai besoin d'envoyer les données du composant livewire à POST /login
.
Voici ma configuration actuelle:
FortifyServiceProvider.php
public function boot()
{
Fortify::createUsersUsing(CreateNewUser::class);
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
// Vues Fortify personnalisées =============================
// Page de connexion
Fortify::loginView(function () {
return view('auth.login');
});
}
Mon auth/login.blade.php
(appelle simplement les composants livewire avec le bon modèle de mise en page)
@livewire('auth.login')
Le composant livewire livewire/auth/login.blade.php
:
Adresse e-mail
@error('email'){{ $message }}@enderror
Mot de passe
@error('password'){{ $message }}@enderror
Se souvenir de moi
Mot de passe oublié?
Se connecter
et mon fichier Http/Livewire/Auth/Login.php
pour le composant livewire:
class Login extends Component
{
public $email = '';
public $password = '';
public $remember = false;
protected $rules = [
'email' => 'required|email|exists:users,email',
'password' => 'required',
];
/**
* Affiche la validation en temps réel pour le champ email
*/
public function updatedEmail() {
$this->validate(['email' => 'email|exists:users,email']);
}
/**
* Connecte l'utilisateur lorsque le formulaire est soumis
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Support\MessageBag
*/
public function login()
{
// ******* Besoin de soumettre le formulaire à Fortify ici?? ******
}
/**
* Rend la vue
* @return mixed
*/
public function render()
{
return view('livewire.auth.login')
->layout('layouts.auth');
}
}