La façade Auth, qui fait partie intégrante de Laravel, offre un mécanisme simple pour les tâches d'authentification : authentifier un usager, vérifier si un usager est authentifié, retrouver l'information sur l'usager authentifié, etc.
Pour l'utiliser, vous devez simplement ajouter une instruction use à votre fichier :
use Auth;
Pour authentifier un usager, il faut passer en paramètre à Auth::attempt() une tableau associatif contenant le code d'usager (code ou courriel, selon le cas) et le mot de passe en clair, tel que saisis à l'écran.
La clé du code d'usager correspond au nom du champ dans la BD. La clé du mot de passe doit absolument être « password » même si le nom du champ du mot de passe est différent.
Ex :
$reussi = Auth::attempt(['code' => $code, 'password' => $motdepasse]);
Si nous avons correctement configuré notre application pour qu'elle utilise la table usagers pour l'authentification, la requête générée sera sous la forme :
select * from `usagers` where `code` = ? limit 1
On voit que le mot de passe n'est pas impliqué dans cette requête. C'est que le processus d'autentification se déroule en deux temps :
Il est possible d'ajouter des critères pour qu'un usager puisse être authentifié. Par exemple, on pourrait empêcher l'authentification pour un usager qui n'est pas actif.
Ex :
$reussi = Auth::attempt(['code' => $code, 'password' => $motdepasse, 'actif' => 1]) ;
La requête générée serait la suivante :
select * from `usagers` where `code` = ? and `actif` = ? limit 1
Ceci démontre que Laravel utilisera chacune des informations du tableau associatif pour monter la clause WHERE, à l'exception de celle où la clé est « password ».
Si vous souhaitez implanter une fonctionnalité du genre « Rester connecté », vous pouvez passer un deuxième paramètre à Auth::attempt(). Ce paramètre sera un booléen qui indique si un cookie d'authentification doit être généré ou non.
Ex :
$reussi = Auth::attempt(['code' => $code, 'password' => $motdepasse, 'actif' => 1], $resterConnecte) ;
Certaines fonctionnalités pourraient être différentes selon que l'usager est authentifié ou non. Exemple typique : le bouton de connexion permettra de se connecter si l'usager n'est pas authentifié. Si l'usager est déjà authentifié, il permettra de se déconnecter.
Ex :
@if (Auth::check())
{{-- usager authentifié : afficher le bouton de déconnexion --}}
@else
{{-- usager non authentifié : afficher le bouton de connexion --}}
@endif
Depuis Laravel 5.5, il est possible d'obtenir exactement le même résultat à l'aide de la directive @auth :
@auth
{{-- usager authentifié : afficher le bouton de déconnexion --}}
@else
{{-- usager non authentifié : afficher le bouton de connexion --}}
@endauth
ou de son inverse, @guest :
@guest
{{-- usager non authentifié : afficher le bouton de connexion --}}
@else
{{-- usager authentifié : afficher le bouton de déconnexion --}}
@endguest
Une fois l'usager authentifié, il est facile de retrouver les informations sur cet usager.
Ex :
if (Auth::check()) {
$usager = Auth::user();
$prenom = $usager->prenom;
...
}
La façade Auth permet même d'authentifier un usager sans avoir à fournir son mot de passe. Il s'agit d'une authentification de force, à utiliser dans des cas très précis, par exemple pour qu'un usager nouvellement enregistré soit automatiquement authentifié.
Ex :
$usager = Usager::find($id);
Auth::login($usager);
De toute évidence, si on permet à un usager de se connecter, il faut lui offrir la possibilité de se déconnecter.
Ex :
Auth::logout();
« Authentication - Manually Authenticating Users ». Laravel. https://laravel.com/docs/master/authentication#authenticating-users
« Using Laravel 5's Authentication Facade ». Tuts+. http://code.tutsplus.com/tutorials/using-laravel-5s-authentication-facade--cms-23461
« How to rename users DB table in default Laravel Auth ». Laravel Daily. http://laraveldaily.com/how-to-rename-users-db-table-in-default-laravel-auth/
« Creating your first Laravel app and adding authentication ». Auth0. https://auth0.com/blog/creating-your-first-laravel-app-and-adding-authentication/
« Laravel Auth — how does it happen? ». Medium. https://medium.com/@sirajul.anik/laravel-auth-how-does-it-happen-30a0c0a295ea
« Laravel 5.5 – New Blade Directives , @auth and @guest ». arjunphp.com. https://arjunphp.com/laravel-5-5-new-blade-directives-auth-guest/
▼Publicité