Laravel 5 管理画面ログイン認証ページをscafoldで作成♪ (10分以内)

# Laravel 5 管理画面ログイン認証

## 概要

* 簡易的な管理画面が欲しい！
* 社内にPHPerが多い！
* migration機能欲しい！

ということで最近流行りのフルスタックFW Laravelを使って管理画面ログイン認証まで作ってみました♪

## ちなみに
Laravel 5.1では標準機能であったログイン認証ページがインストール時にはありませんでした。
そのため、Scafoldで手軽に作成することとしました。

## 環境情報

* MacOS 10.10.4 Yosemite
* MAMP 
* Laravel 5.1
* PHP 5.5
* MySQL 5.5

※PHP5.3では動きませんでした(TへT)


## Laravelでプロジェクト作成

以下コマンドでプロジェクト作成します。

```
$ composer create-project laravel/laravel --prefer-dist
```

`laravel`というプロジェクトが作成されていることが確認できる。

## プロジェクト名変更

```
$ mv laravel project_name
```

## ドメイン修正

* config/app.php

※利用される環境に合わせて適宜修正してください。

```
'url' => 'http://localhost', # 適宜修正
```

## DB設定修正

* config/database.php

※利用される環境に合わせて適宜修正してください。

以下の箇所で利用するDBタイプを修正してください。


```
'default' => env('DB_CONNECTION', 'mysql'),

...
...

'connections' => [

        'sqlite' => [
            'driver'   => 'sqlite',
            'database' => storage_path('database.sqlite'),
            'prefix'   => '',
        ],

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'pgsql' => [
            'driver'   => 'pgsql',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ],

        'sqlsrv' => [
            'driver'   => 'sqlsrv',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
        ],

    ],
```

MAMPでMySQLを利用している場合は
`unix_socket` を設定する必要があります。

```

        'mysql' => [
            'driver'       => 'mysql',
            'host'         => env('DB_HOST', 'localhost'),
            'unix_socket'  => '/Applications/MAMP/tmp/mysql/mysql.sock',   # 追加
            'database'     => env('DB_DATABASE', 'forge'),
            'username'     => env('DB_USERNAME', 'forge'),
            'password'     => env('DB_PASSWORD', ''),
            'charset'      => 'utf8',
            'collation'    => 'utf8_unicode_ci',
            'prefix'       => '',
            'strict'       => false,
        ],
```



## .env のDBログイン情報修正

以下を修正してください

```
DB_HOST=localhost
DB_DATABASE=fashionpick
DB_USERNAME=root
DB_PASSWORD=root
```

## migration 機能で認証ユーザ情報テーブル作成

* Laravel5.1デフォルトでdatabase/migrations/配下に認証に必要なテーブルのCREATE情報が記述されています。

```
$ cd /path/to/project
$ php artisan migrate
```

上記コマンド実行で以下3テーブルが作成されます。

|*Tables*|
|---|
|migrations|
|password_resets|
|users|

## Scaffoldで認証ページ作成

conf/app.php でDB接続設定をしている前提で進めます。

##### bestmomo/scafold インストール

```
$ cd /path/to/project_name
$ composer require bestmomo/scafold:dev-master
```

##### config/app.phpに追加

```
'providers' => [
   ...
   ...
   Bestmomo\Scafold\ScafoldServiceProvider::class,  # 追加
 ],
```

## viewやassetsをパッケージからアプリのディレクトリにコピー

```
$ php artisan vendor:publish

Copied Directory [/vendor/bestmomo/scafold/views] To [/resources/views]
Copied Directory [/vendor/bestmomo/scafold/views/auth] To [/resources/views/auth]
Copied Directory [/vendor/bestmomo/scafold/views/emails] To [/resources/views/emails]
Copied Directory [/vendor/bestmomo/scafold/public] To [/public]
Publishing complete for tag []!
```

* 以下のように作成されていることが確認できます。

```
public/
├── css
│   └── app.css
└── fonts
     ├── glyphicons-halflings-regular.eot
     ├── glyphicons-halflings-regular.svg
     ├── glyphicons-halflings-regular.ttf
     ├── glyphicons-halflings-regular.woff
     └── glyphicons-halflings-regular.woff2

resources/views/
├── app.blade.php
├── auth
│   ├── login.blade.php
│   ├── password.blade.php
│   ├── register.blade.php
│   └── reset.blade.php
├── emails
│   └── password.blade.php
├── errors
│   └── 503.blade.php
├── home.blade.php
├── vendor
└── welcome.blade.php
```

## ルート一覧確認

```
$ php artisan route:list



+--------+--------------------------------+-------------------------------------------------------+------+------------------------------------------------------------+------------+
| Domain | Method                         | URI                                                   | Name | Action                                                     | Middleware |
+--------+--------------------------------+-------------------------------------------------------+------+------------------------------------------------------------+------------+
|        | GET|HEAD                       | /                                                     |      | Closure                                                    |            |
|        | POST                           | auth/login/{one?}/{two?}/{three?}/{four?}/{five?}     |      | App\Http\Controllers\Auth\AuthController@postLogin         | guest      |
|        | GET|HEAD                       | auth/login/{one?}/{two?}/{three?}/{four?}/{five?}     |      | App\Http\Controllers\Auth\AuthController@getLogin          | guest      |
|        | GET|HEAD                       | auth/logout/{one?}/{two?}/{three?}/{four?}/{five?}    |      | App\Http\Controllers\Auth\AuthController@getLogout         |            |
|        | GET|HEAD                       | auth/register/{one?}/{two?}/{three?}/{four?}/{five?}  |      | App\Http\Controllers\Auth\AuthController@getRegister       | guest      |
|        | POST                           | auth/register/{one?}/{two?}/{three?}/{four?}/{five?}  |      | App\Http\Controllers\Auth\AuthController@postRegister      | guest      |
|        | GET|HEAD|POST|PUT|PATCH|DELETE | auth/{_missing}                                       |      | App\Http\Controllers\Auth\AuthController@missingMethod     | guest      |
|        | GET|HEAD                       | home                                                  |      | \Bestmomo\Scafold\Http\Controllers\HomeController@index    | auth       |
|        | POST                           | password/email/{one?}/{two?}/{three?}/{four?}/{five?} |      | App\Http\Controllers\Auth\PasswordController@postEmail     | guest      |
|        | GET|HEAD                       | password/email/{one?}/{two?}/{three?}/{four?}/{five?} |      | App\Http\Controllers\Auth\PasswordController@getEmail      | guest      |
|        | POST                           | password/reset/{one?}/{two?}/{three?}/{four?}/{five?} |      | App\Http\Controllers\Auth\PasswordController@postReset     | guest      |
|        | GET|HEAD                       | password/reset/{one?}/{two?}/{three?}/{four?}/{five?} |      | App\Http\Controllers\Auth\PasswordController@getReset      | guest      |
|        | GET|HEAD|POST|PUT|PATCH|DELETE | password/{_missing}                                   |      | App\Http\Controllers\Auth\PasswordController@missingMethod | guest      |
+--------+--------------------------------+-------------------------------------------------------+------+------------------------------------------------------------+------------+
```

##### 認証ページへアクセスする！

* http://(設定したドメイン)/auth/login にアクセスすると以下のように表示されることを確認できます。

`http://(設定したドメイン)/home` にアクセスしても`http://(設定したドメイン)/auth/login` にリダイレクトにされることが確認できます。


![Imgur](http://i.imgur.com/0ZLPSfL.png)

はじめは右上メニューの `Register`リンクよりアカウント作成し
ログインしてください。

以上