authしてログインとレジスター画面を作る! Laravel超初心者の勉強

Laravelにあるauthを使うとログインとレジスター(登録)画面が作れると見かけたので早速入れたいと思います。

Laravelクイックスタートのblogプロジェクトを作ったあとから進めていきます。

またデータベースの設定も済ましてあります。まだの方は以下を参照ください。
(MySQLの設定まででOKです。)

動作環境

ざっくりMac El capitan
mysql@5.6
PHP7.2.5
Laravel Framework 7.6.2
ローカル環境です。

テーブルを作成する

Laravelプロジェクト既存のテーブルを作成します。

php artisan migrate

■ 返答

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.16 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.04 seconds)

make:authする(できなかった)

以下コマンドを実行。

php artisan make:auth

■ 返答

command "make:auth" is not defined.

またか。スムーズに行ったことないな。

authを作成する

以下を実行。

composer require laravel/ui --dev
php artisan ui vue --auth

php artisan ui vue --authを実行すると「Please run "npm install && npm run dev" to compile your fresh scaffolding.」

と書かれているので実行する。

npm install
npm run dev

さりげなくvueデビューしてしまった。わかってないけど、やってみよう。

最後にアップデートできるよ、と言われたけど、置いておく。

サーバー起動。

php artisan serv

ホーム画面右上に「Login」と「Register」が追加されました。

laravel web local

リンクをクリックするときちんと機能しています。

さっそくレジスターしてみます。

laravel login

なんかログインできました。

とくに面白い画面でもないですが、URLもhttp://localhost:8000/homeへ変わったのが確認できました。

画面の追加

controllerなどにもいい加減なれないといけないので、せっかくなので画面を追加します。

参考サイト:Laravel 6.x でログイン機能を構築
ただの備忘録として実行記録を残しているだけなので、詳しくは上記のサイトをご覧ください。

以下を実行してcontrollerの作成。

php artisan make:controller BookController

作成されたcontrollerを編集。

ファイルパス:app/Http/Controllers/BookController.php

■ 修正前

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

class BookController extends Controller
{
//
}

■ 修正後

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;

class BookController extends Controller{
public function __construct() {
$this->middleware('auth');
}
public function index() {
$user = Auth::user(); $data = ['user' => $user];
return view('book.index', $data);
}

}

web.phpを編集。

ファイルパス:routes/web.php

以下コードを最後の行に追加

Route::get('/book', 'BookController@index');

home.brade.phpを複製。(resources/views/の中)

複製したphp(resources/views/book/index.brade.php)に以下を貼り付け。そのまま全部決して貼り付けてもいいのでしょうが、一応@endifの下に貼り付けました。

<p>{{ $user->name }}</p>
<p>{{ $user->email }}</p>

ついでにHome.blade.phpのYou are logged in!の下に以下コード追加。

<div class="flex-center position-ref full-height">
<div>
@auth
<a href="{{ url('/book') }}">book</a>
@endauth
</div>
</div>

サーバーを起動しログイン。

You are logged in!
book

となっているのでbookをクリック。

laravel controller test

ユーザー名とemailアドレスが表示されるようになりました。