Laravelでログインサイトを作る #2

0
Capture 12
ログイン画面へリダイレクト

サイト全体を認証(ログイン必須)サイトにする

Laravelのサイト(コンテンツ)がログインをしないと閲覧できないように設定していきます。

リダイレクト先の変更

Login、Register(ユーザ作成)後のリダイレクト先はhttp://localhost:3000/homeとなっています。URLの末尾の/homeを外してTOP へリダイレクトするにはapp/Providers/RouteServiceProvider.phproutes/web.phpを編集します。

app/Providers/RouteServiceProvider.php
‘/home’ から ‘/’ に変更するだけです。

ルーティングの変更

routes/web.php
読みやすいようにuse App\Http\Controllers\HomeController;を追加しているところに注意。

ログインしていない状態でhttp://localhost:3000/にアクセスするとhttp://localhost:3000/loginにリダイレクトされている事が確認できます。

Capture 12
ログイン画面へリダイレクト

カードレイアウトをコンポーネント化する

よく使うテンプレートをコンポーネント化します。コンポーネント化することで効率よく無駄なくテンプレートを構築することができます。

php artisan make:component Card/Card

make:componentコマンドを入力すると2つのファイルが生成されます。それぞれ以下のように編集を加えます。

resources/views/components/card/card.blade.php

slotの中にコンテンツが入ります。

app/View/Components/Card/Card.php

コンポーネントファイルをhome.blade.phpテンプレートへ読み込ませます。

resources/views/home.blade.php

http://localhost:3000/の画面はこのような状態になっています。

Capture 13
home.blade.phpの表示状態

ルート全体を要認証にする

Route::middleware(['auth'])->group(function ()で囲むことでルート全体を認証化させることができます。

HomeController.phpmiddleware('auth')は不要になりますので以下のコードは削除します。

    public function __construct()
    {
        $this->middleware('auth');
    }

app/Http/Controllers/HomeController.php