Si vous désirez permettre à certains usagers d'accéder à des ressources qui nécessitent des droits particuliers, il vous faut implanter le système d'authentification qui leur permettra de s'identifier avec un code d'usager et un mot de passe.
Ce système aura besoin minimalement de trois routes :
+--------+----------+---------------------------+------------------+------------------------------------------------------------------------+---------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+---------------------------+------------------+------------------------------------------------------------------------+---------------+
| | ... | ... | ... | ... | ... |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web, guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web, guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
+--------+----------+---------------------------+------------------+------------------------------------------------------------------------+---------------+
Elles peuvent être créées à l'aide ce l'instruction suivante :
Auth::routes();
ou encore être ajoutées manuellement :
Route::get( 'login', [
'as' => 'login',
'uses' => 'Auth\LoginController@showLoginForm',
] );
Route::post( 'login', [
'uses' => 'Auth\LoginController@login',
] );
Route::post( 'logout', [
'as' => 'logout',
'uses' => 'Auth\LoginController@logout',
] );
Selon les routes présentées plus haut, votre sous-système d'authentification doit minimalement définir les méthodes d'action suivantes.
Contrôleur | Méthode d'action | Rôle |
---|---|---|
LoginController |
showLoginForm | Affiche la vue pour s'authentifier. |
LoginController |
login | Vérifie les informations d'authentification puis authentifie l'usager. Le formulaire d'authentification doit mener vers cette méthode (ou plutôt vers sa route). |
LoginController |
logout | Désauthentifie l'usager. |
Dès l'installation de votre projet Laravel, vous avez en main un dossier Auth placé sous app\Http\Controllers. Je vous conseille de mettre en commentaire tout le contenu des classes des contrôleurs de ce sous-dossier et de coder vos propres méthodes d'actions pour ces contrôleurs.
Pourquoi? Parce qu'ils offrent des fonctionnalités minimales qui fonctionnent très bien à condition que vous n'ayiez rien à modifier.
Dans le cas où vous désirez changer un comportement, par exemple travailler avec des champs supplémentaires dans votre table d'usagers ou encore rediriger le contrôle ailleurs que sur la page /home après l'authentification, il sera plus exigeant de comprendre où apporter les modifications que de tout coder vous-mêmes.
Lorsque vous développerez votre propre code, vous pourrez avoir une méthode qui se charge d'afficher votre propre formulaire d'authentification, une autre qui utilise la façade Auth pour vérifier les informations saisies dans le formulaire, etc.
Voici un exemple de contrôleur dont le code a été mis en commentaire :
Ex :
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
// Votre code ici
...
// **************************************************************************
// code généré par Laravel (conservé ici comme référence)
// **************************************************************************
// /*
// |--------------------------------------------------------------------------
// | Login Controller
// |--------------------------------------------------------------------------
// |
// | This controller handles authenticating users for the application and
// | redirecting them to your home screen. The controller uses a trait
// | to conveniently provide its functionality to your applications.
// |
// */
//
// use AuthenticatesUsers;
//
// /**
// * Where to redirect users after login.
// *
// * @var string
// */
// protected $redirectTo = '/home';
//
// /**
// * Create a new controller instance.
// *
// * @return void
// */
// public function __construct()
// {
// $this->middleware('guest')->except('logout');
// }
}
▼Publicité