Laravel6でログイン認証を実装する方法(macOS Catalina環境下)

2020-02-07

Laravel6のログイン機能実装

LaravelはPHPのフレームワークなので、機能実装が簡単にできるコマンドが用意されています。

その一つにログイン認証機能の実装がありました。

「ありました」・・・そうなんです。Laravel5.8まではあったのです。

今回私が取り入れたLaravelはLaravel6です。残念なことにそのコマンドがなくなってしまいました。

簡単コマンドなしでログイン認証機能を実装する方法を備忘録として置いておきます。

私がやりたかったこと

・Laradock環境下のLaravel6でログイン認証を実装する

PC環境
macOS Catalina 10.15.1
Docker for Mac 19.03.5
Laravel 6.14.0

Laravel5.8まで使えたログイン認証機能コマンド

Laravel5系では驚くほど簡単にログイン認証機能を実装できました。

$ php artisan make:auth

このコマンドをコマンドひとつを打てばいいだけです。

複雑な機能をコマンドだけで簡単に実装できるところがLaravelの魅力でもあるのですが、Laravel6系ではちょっと勝手が違います。

このログイン認証機能実装のコマンドを打つとこんな感じになります。

Command "make:auth" is not defined.
Did you mean one of these?
make:channel
make:command
make:controller
make:event
make:exception
make:factory
make:job
make:listener
make:mail
make:middleware
make:migration
make:model
make:notification
make:observer
make:policy
make:provider
make:request
make:resource
make:rule
make:seeder
make:test

「何をしてほしいのかわかりませんよ」とエラーが出ます。

便利だったコマンドがなくなってしまったようです。

Laravel6系でログイン認証機能を実装するにはどうしたらいいの?

ググってみると答えがありました。
ちょっと手数は増えますが、この二2つのコマンドを実行すればいいとのことです。

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

Laravel6系でログイン認証機能を実装するコマンド

今回はLaradockでLaravel環境を構築したので、Laradockのworkspaceコンテナに入ります。

Laradockディレクトリでworkspaceコンテナに入り、Laravelをインストールしたディレクトリに移動します。私の場合は「project01」にインストールしたので目指すはproject01ディレクトリです。

$ docker-compose exec --user=laradock workspace bash // workspaceコンテナに入る
$ cd project01 // Laravelをインストールしたディレクトリに移動

続いて2つのコマンドを実行します。

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

ここで次のようなメッセージが出ました。

Please run "npm install && npm run dev" to compile your fresh scaffolding.

「npmをインストールしてnpm run devを実行せよ」とのことなのでその通りにします。

$ npm install

ここでエラーがでました。

zsh: command not found: node

npmはNode.jsのコマンドなので、 Node.js のインストールが必須になります。
それが私の環境に入っていないようなので、Homebrewを使ってインストールしました。

Node.jsと一緒にnodebrew(Node.jsのバージョン管理ツール)も入れておいた方が良さそうなので一緒にインストールします。

$ brew install nodebrew

次にNode.jsをインストールしますが、どちらかを選んでください。

#最新版をインストール
$ nodebrew install-binary latest
#安定版をインストール
$ nodebrew install-binary stable

ここでまたエラーが出ました。

Warning: Failed to create the file
Warning: z: No such file or directory

ディレクトリがないとのことなので、作成します。

$ mkdir -p ~/.nodebrew/src

改めて安定版をインストールします。

$ nodebrew install-binary stable

インストールが終わったらバージョンを確認します。

$ nodebrew ls

Laravel6のログイン機能実装

current: noneになっているのでインストールしたバージョンを有効化します。

$ nodebrew use v12.14.0

再度バージョンを確認するとインストールしたバージョンが設定されていました。

Laravel6のログイン機能実装

最後に環境パスを通します。

$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zprofile

ここで注意!

macOS X 10.15 Catalinaからはzshがデフォルトになったので「~/.zprofile」ですが、bashで使う時には「~/.bash_profile」になります。

環境パスを通した後にnodeが使えるか確認します。

$ node -v

無事に表示されましたのでインストール完了です。

改めて「npmをインストールしてnpm run devを実行せよ」をやってみます。

$ npm install
$ npm run dev

Laravel6にログイン実装の確認

http://project01.test/ にアクセスしすると、LOGINとREGISTERが右上に表示されました。

Laravel6のログイン機能実装

LOGINに入るとこんな感じです。

Laravel6のログイン機能実装

REGISTERに入るとこんな感じです。

Laravel6のログイン機能実装

まとめ:ログイン機能実装の工数は増えたけれどやっぱり便利

Laravel5.8まで使えていた一発簡単ログイン機能実装コマンドが使えなくなって、しょんぼりしま人も多いはずです。

Laravel6になって実装までの工数は増えてしまいましたが、イチからPHPをゴリゴリと書くことに比べたらまだまだ圧倒的に便利です。

これからLaravelがアップデートすると仕様の変更があると思いますが、Laravel6ではこの方法でログイン機能を実装できます。