フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Laravel リソースコントローラと会員認証

はじめに

リソースコントローラ

  • リソースコントローラー作成
php artisan make:controller ContactFormController --resource

readouble.com

ルーティングの設定

  • Route::resource('contacts', ContactFormController::class);と記述すると下記のようにルーティングされる
+--------+-----------+------------------------------------------------+--------------------------------+------------------------------------------------------------------------+--------------------------------------+
| Domain | Method    | URI                                            | Name                           | Action                                                                 | Middleware                           |
+--------+-----------+------------------------------------------------+--------------------------------+------------------------------------------------------------------------+--------------------------------------+
|        | POST      | contacts                                       | contacts.store                 | App\Http\Controllers\ContactFormController@store                       | web                                  |
|        | GET|HEAD  | contacts                                       | contacts.index                 | App\Http\Controllers\ContactFormController@index                       | web                                  |
|        | GET|HEAD  | contacts/create                                | contacts.create                | App\Http\Controllers\ContactFormController@create                      | web                                  |
|        | PUT|PATCH | contacts/{contact}                             | contacts.update                | App\Http\Controllers\ContactFormController@update                      | web                                  |
|        | GET|HEAD  | contacts/{contact}                             | contacts.show                  | App\Http\Controllers\ContactFormController@show                        | web                                  |
|        | DELETE    | contacts/{contact}                             | contacts.destroy               | App\Http\Controllers\ContactFormController@destroy                     | web                                  |
|        | GET|HEAD  | contacts/{contact}/edit                        | contacts.edit                  | App\Http\Controllers\ContactFormController@edit                        | web                                  |
  • 下記のように記述すると特定のリソースだけルーティングすることが可能である。
Route::resource('contacts', ContactFormController::class)->only([
    'index', 'show'
]);
  • indexとshowだけルーティングされている
+--------+-----------+------------------------------------------------+--------------------------------+------------------------------------------------------------------------+--------------------------------------+
| Domain | Method    | URI                                            | Name                           | Action                                                                 | Middleware                           |
+--------+-----------+------------------------------------------------+--------------------------------+------------------------------------------------------------------------+--------------------------------------+
|        | GET|HEAD  | contacts                                       | contacts.index                 | App\Http\Controllers\ContactFormController@index                       | web                                  |
|        | GET|HEAD  | contacts/{contact}                             | contacts.show                  | App\Http\Controllers\ContactFormController@show                        | web                                  |
  • 対象のページを会員認証させたい場合、下記のようにmiddlwareでauth認証を行う。
Route::group(['prefix'=> 'contact', 'middleware' => 'auth'], function () {
    Route::get('/index', [ContactFormController::class, 'index']);
});

認証ディレクティブ

  • View側は下記のようにログイン認証判定を行うことができる
@guest
    // ユーザーは認証されていません。
@else
    // ユーザーは認証されています。
@endguest

readouble.com