Laravel サーバサイド 未分類

[入門者向け] Laravel UIのAuthで作成されるルーティングの正体を掴む

どうも、シローです。

普段はサーバサイドやフロントサイドの開発をしております。

今回はLaravel UIで作成されたルーティングについてのご紹介をします。

対象者

  • Laravelを触り始めた人
  • Laravel UIのAuthを使ってみた後のルーティングについて理解したい人

Laravel UIのAuthを実行

前回の記事(https://shiro-secret-base.com/laravel-bootstrap/)でLaravel UIでBootstrapを導入するときに--authオプションを使用しました。

以下はこのコマンドを実行した前提で進めます。

結論

app/vendor/laravel/ui/src/AuthRouteMethods.phpで定義されているルーティングが追加される。

以下はどうやって調べたかの経緯となります。

どうやって調べたか

routes/web.phpを確認すると認証用のルーティングが追加されます。

Auth::routes();というのが追加された認証用のルーティングとなります。

このAuthはIlluminate\Support\Facades\Authから使用しているみたいなので、このファイルがどこにあるかを調べてみます。

app/vendor/composer/authload_classmap.phpを見てみます。

対応するファイルはapp/vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.phpのようです。

Auth.phpの中身

static::$app->providerIsLoaded(UiServiceProvider::class)の部分が気になりますね、autoload_classmap.phpで調べると

app/vendor/laravel/ui/src/UiServiceProvider.phpのようでしたので確認してみます。

boot関数の中にルーティングを指定してそうな箇所が見つかりました。同じ階層のファイルにAuthRouteMethods.phpがあるのでそれを確認してみます。

何が起きているかを整理

まず、AuthファザードではUiServiceProviderを呼び出しています。

その後UiServiceProviderではRoute::mixin(new AuthRouteMethods);AuthRouteMethodsのインスタンスメソッドのauthをルーティングに登録します。

なので、Route::auth()が呼び出されるとauth関数の中身のルーティングが追加されます。

では、これがどこで実行されているか?Authファザードを見返してみるとstatic::$app->make('router')->auth($options); の部分で実行されているのがわかりました。

まとめ

  • Laravel UIのAuthオプションで追加される認証用のルーティングはapp/vendor/laravel/ui/src/AuthRouteMethods.phpで記述されている
  • vendorのファイルでどのファイルを呼び出しているかはautoload_classmap.phpを確認すればわかる。

次はルーティングが呼び出しているコントローラについても深掘りしようと思います。

-Laravel, サーバサイド, 未分類

© 2024 Shiro's secret base