Laravel5.5こと始め 〜2. ユーザログイン機能の追加〜

# 内容
以下の順番にまとめます。
[1. MacへのXAMPP+Laravelインストール](https://qiita.com/sonrisa/items/f08112fe0ec4f51e4bdf)
[2. ユーザログイン機能の追加](https://qiita.com/sonrisa/items/207fd53eced13fc88acf) ←いまここ
[3. MVCとルーティングの説明]
(https://qiita.com/sonrisa/items/809adf872e6fb3657f81)
[4. ユーザリストの表示]
(https://qiita.com/sonrisa/items/929486929ed8d851a24e)
[5. ユーザリストのペジネーション表示]
(https://qiita.com/sonrisa/items/86efb8caebe207ab8fa8)
[6. ユーザ管理APIの追加](https://qiita.com/sonrisa/items/bc4894e6803632089ceb)
[7. Vue.jsとAPIベースのユーザ管理アプリの追加準備](https://qiita.com/sonrisa/items/595f080c6ecf1ed61b93)
[8. Vue.jsとAPIベースのユーザ管理アプリの追加](https://qiita.com/sonrisa/items/48a9a8e73e757c81619a)
[9. Vue.jsとAPIベースのユーザ管理アプリへのペジネーション追加]
(https://qiita.com/sonrisa/items/d58c56b638924d8c6810)
[10. APIへのJWTAuth認証の追加]
(https://qiita.com/sonrisa/items/97c1f3e8491f76dc2ce2)
[11. Vue.jsとAPIベースのユーザ管理アプリへの認証の追加](https://qiita.com/sonrisa/items/1976cbd049cadfec1285)

# 2. ユーザログイン機能の追加
先程作成したLaravelプロジェクト「userauth」にユーザ登録とログインの機能を追加します。

## 2.1. Laravelプロジェクトに認証機能を追加します。

```
$ php artisan make:auth
Authentication scaffolding generated successfully.
```

## 2.2. AppServiceProvider.phpの修正

MySQLのver5.7.7より前では、PRIMARY_KEYおよびUNIQUE_KEYを付けたカラムには最大767bytesまでしか入らないのですが、Laravel5.4からは標準charasetがutf8mb4となったことで1文字あたりの最大byte数が4bytesに増えたこともあり、デフォルトのままではエラーが発生します。そのため、「app/Providers/AppServiceProvider.php」を以下のとおり修正します。

```app/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; // 追加

...(中略)

    public function boot() 
    { 
        Schema::defaultStringLength(191); // 追加
    } 

...(中略)
```

## 2.3. Laravelの環境設定ファイルである.envファイルの編集

プロジェクトフォルダの直下にLaravelプロジェクトがグローバルで利用する環境変数を設定するファイル.envファイルがあります。ユーザ登録のためのデータベースとテーブルを用意する必要がありますので、下記の通りMySQLデータベースに関連する情報を設定します。

```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test # インストール時にテスト用に作成されたデータベース。必要に応じてcreate databaseしたデータベースをセットしてもかまいません。
DB_USERNAME=root # 本番ではアクセス用のユーザを作成が推奨されますが、ここでは簡単にrootを使います。
DB_PASSWORD=secret # 「Laravel5.5こと始め 〜1. MacへのXAMPP+Laravelインストール〜」で設定したパスワードを設定します。
```

## 2.4. Laravelのマイグレーション機能を使ってユーザテーブルを作成

Laravelは非常に高度なデータベースのマイグレーション機能をもっています。認証機能を有効にすると「database/migration」フォルダに下記のPHPファイルがコピーされます。

```
$ ls database/migrations/
2014_10_12_000000_create_users_table.php		2014_10_12_100000_create_password_resets_table.php
```

名前から推測できるとおり、「2014_10_12_000000_create_users_table.php」はユーザ情報を保存する「users」テーブルを作成するPHPスクリプトで、「2014_10_12_100000_create_password_resets_table.php」はパスワードリセット用のトークンを保存する「password_resets」テーブルを作成するPHPスクリプトになります。

勘のよい方はご察知のとおり、「php artisan」コマンドを利用するとこのスクリプトが実行されて、create tableされるわけです。

```
$ php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
```

phpMyAdmin( http://localhost/phpmyadmin )を参照すると「test」データベースに「users」テーブルと「password_resets」テーブルが新規作成されていることがわかります。

<img width="969" alt="スクリーンショット 2018-06-15 12.39.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/263562/c56409ba-e76b-213f-19dd-cf7ec70d0ada.png">
図1. phpMyAdminのキャプチャ画像

## 2.5. ユーザ登録の確認

開発用サービスを立ち上げて、ユーザ登録と参照、修正、削除を試します。

### 2.5.1 開発用サービスの立ち上げ

```
$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
```

### 2.5.2 ユーザ登録

ブラウザから http://localhost:8000/ にアクセスして、右上の「REGISTER」ボタンを押下します。

<img width="629" alt="スクリーンショット 2018-06-15 12.48.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/263562/4c3d6da6-7be6-98f8-e905-04dd3902860e.png">

登録画面が表示されますので、必要情報を入力して「Register」ボタンを押下します。「Register」画面でユーザ情報を入力し、「Register」ボタンを押下します。

<img width="565" alt="スクリーンショット 2018-06-25 13.38.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/263562/4a6ac6a0-cd65-b8e9-2745-b78614e78037.png">

すると、ユーザ登録が完了し、登録したユーザとして即ログインがなされます。

<img width="578" alt="スクリーンショット 2018-06-15 12.52.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/263562/a9ddecb3-448e-2a69-01aa-5c3208a258d6.png">

phpMyAdmin( http://localhost/phpmyadmin )を参照するとユーザが登録されていることが見て取れます。

<img width="721" alt="スクリーンショット 2018-06-25 13.42.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/263562/2ac60fc3-90c3-9f16-e03c-26f97df7107d.png">

以上、「2. ユーザログイン機能の追加」が完了です。

次は、「[3. MVCとルーティングの説明](https://qiita.com/sonrisa/items/809adf872e6fb3657f81)」です。