Laravel6.xで認証を有効にする（windows仮想環境対応）

# はじめに
前回記事（[Laravel6.xを仮想環境に導入する（Vagrant - homestead　導入編）](https://qiita.com/honami/items/94f77d4def45342cb75b)）の続きとして、Laravel6.x系のauthを有効にするところまでで、windows環境だとちょっとめんどくさい手順が必要になっていたのでまとめておきます。
初学者の一助になりましたら幸いです。

# 想定使用環境

## 対応OS
- windows 10 Professional
- laravel6.xのインストールが完了している環境
    - Databaseもインストール済みであること（当記事ではMySQL8が入っているものとします）

[Laravel6.xを仮想環境に導入する（Vagrant - homestead　導入編）](https://qiita.com/honami/items/94f77d4def45342cb75b)の続きとして書いていますが、フォルダ等を適宜読み替えればそのまま使用できると思います。
OSもwindows独自の（と思われる）問題を解消しながら書いているだけなので、基本的には他環境もほぼそのままいけると思います。

## 使用ソフト
エディタが入っていれば後は特に問題ありません。前記事としては"Visual Studio Code"を推奨しています。

また、DB登録が絡むので、DB系のソフトを入れると確認が楽になると思います。TablePlusとかA5Mk2とか。

# 認証を有効にしてみる
Windows以外の環境の人は、DBの設定さえ乗り越えてしまえば、基本的には公式ドキュメントで行けると思います。
https://readouble.com/laravel/6.x/ja/authentication.html

以下の記事がもう少し詳しく書いてくれています。
https://qiita.com/ucan-lab/items/bd0d6f6449602072cb87
…が、Windows環境では途中に一工夫必要です。

## 1.DBの設定を有効にする
なぜか".env"ファイルの初期値が古い様子で、記事現在ではこれを書き換えないと動きません（もしくは未来に治るかもしれませんが）。
チュートリアルも記事もここの設定が終わっている前提で書かれているので、まずはそこを変更します。

```　.env（初期状態）
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=
```

データベース周りはだいたい9行目あたりから書いてあります。
初期値は（修正されていなければ）上記のようになっていますが、少なくとも現在はhomesteadを入れた段階でできているDBは"homestead"で、ユーザも"homestead"で作成されています。そのため、以下に変更します。

```　.env（修正後）
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
```

ちなみにこの設定はよく見ると6.x公式ドキュメント「Homestead」あたりに書いてあったりします。ちなみに、PostgreSQLのときはポートが"5432"になります。
おまけとして、クライアントOS(つまりWindows)側からDBを見る場合は、ポートを"33060"にすると繋がります（PostgreSQLでは"54320"）。TablePlusとかから見る場合はそのように設定しましょう。

## 2.マイグレーションを通す
仮想マシンの自フォルダ（前記事から通しの人は"moefan"）に移動して、以下のコマンドを打ちます。

```bash(仮想マシン)
vagrant@homestead:~/code/moefan$ php artisan migrate
```

1でしっかり設定できていれば通るはずです。

## 3.laravel/uiのインストール
Laravel5系のときはデフォルトで入っていた様子ですが、Laravel6系の現在は（記事現在で）自力で入れる必要があります。

```bash(仮想マシン)
vagrant@homestead:~/code/moefan$ composer require laravel/ui
```

## 4.uiを有効にする
```bash(仮想マシン)
vagrant@homestead:~/code/moefan$ php artisan ui vue --auth
```

vueの部分は"bootstrap"または"react"でもいけますが、本記事ではvueで勧めます。
完了後に「"npm install && npm run dev"してね」というメッセージが出ます。
…が、このコマンドだとwindows上の仮想環境ではどちらも通らないのです…

自分はは解決に向けて以下のサイトを参考にしました。
https://ameblo.jp/minister0926/entry-12463135199.html

## 5.npm install
windows環境じゃない人はそのままで大丈夫らしいです。

windows環境の人は以下の通りオプションをつけて実行してください。

```bash(仮想マシン)
vagrant@homestead:~/code/moefan$ npm install --no-bin-links
```

WARNは出ると思いますが、ERRORにはならず通るはずです。

## 6.npm run dev
vueのビルドです。これもそのままではエラーを吐きます。どうやらwindowsでは絶対パスで指定してやる必要があるらしい。導入編でも似たような設定を要求された気がしますね。

インストールフォルダ（通しの人は"moefan"）にある"package.json"を開いて、以下の場所を修正します。

```package.json（該当箇所引用、修正済）
    "scripts": {
        "dev": "npm run development",
        "development": "node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
```
【cross-env】と書かれている場所が"development""hot""production"の３箇所にあるので、それぞれを
【node_modules/cross-env/dist/bin/cross-env.js】に変更してください。

これで通るようになるので、改めてコマンドを打ちます。

```bash(仮想マシン)
vagrant@homestead:~/code/moefan$ npm dev run
```

完了したら画面を見てみると、認証がついているはずです。

# さいごに
データベースの初期値は流石に対応してほしいなぁ、と思いつつ、お役に立てていれば幸いです。

個人的には、開発環境としてはmacを支給してほしいなぁ…とかなり思わされました。がっくしぽろり。