make:authの効果
make:authによって様々な処理が行われるので、ポイントを確認していきましょう。
ルーティングの追加
まず、routes/web.php を確認してみましょう
web.php
(省略)
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
上記のような記述が追記されています。
- 認証のための各種ルーティング(/loginなど)
- 仮のログイン後のホームページのルーティング(/home)
がそれぞれ設定されています。 では、認証のための各種ルーティングがどのようなものか確認してみましょう。
実は、この Auth::routes() メソッドは以下のような定義になっています。
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
(sample_app/vendor/laravel/framework/src/Illuminate/Routing/Router.php)
上記のコードを大きく分けると、
- ログイン関連のルーティング
- サインアップ関連のルーティング
- パスワードリセット関連のルーティング
の大きく3ブロックにわかれることが確認できます。
コントローラの追加
続いてコントローラも追加されていることを確認してみましょう。 sample_app/app/Http/Controllers/ のディレクトリを確認すると、
- HomeController.php、
- Auth/LoginController.php
- Auth/RegisterController.php
- Auth/ResetPasswordController.php
- Auth/ForgotPasswordController.php
以上、5つのコントローラが追加されています。
ビューの追加
さらにビューについても sample_app/resources/views/ディレクトリを確認すると
- home.blade.php
- auth/login.blade.php
- auth/register.blade.php
- auth/passwords/email.blade.php
- auth/passwords/reset.blade.php
以上、5つのビューが追加されています。
モデルの追加
最後に、モデルについても確認しておきましょう。
- sample_app/app/User.php
が追加されていることが確認できます。
まとめ
このように
php artisan make:auth
という一行を実行するだけで、今回見ただけでも
- ルーティングの追記
- コントローラーの追加
- ビューの追加
- モデルの追加
と様々な処理が行われました。
ログイン処理という多くのWebアプリケーションで利用され、しかも実装が複雑な機能について、Laravelは強力にサポートしていることがわかります。