ユーザー登録、ログイン・ログアウト機能生成
ユーザー登録やログイン・ログアウト機能はコントローラーやビューを作る必要があるが、
Laravelではコマンド一つで作成可能
$ php artisan make:auth
すると下記ファイルが自動生成される
resources
|- views
|- home.blade.php
|- layouts
| |- app.blade.php
|- auth
|- passwprds
| |-email.blade.php
| |-reset.blade.php
|- login.blade.php
|- register.blade.php
|- verify.blade.php
app
|- Http
|- Controllers
| |- HomeController.php
|- Auth
|- ForgotPasswordController.php
|- LoginController.php
|- RegisterController.php
|- ResetPasswordController.php
|- VerificationController.php
また、ルーティングroutes/web.php
に次のように追加される
Route::get('/', function () {
return view('welcome');
});
// 以下が追加される内容
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
- ルーティングではgetメソッドでサーバー側に要求が来た時の処理を定義する
- 第一引数にuri(ドメイン以降のurl)を指定し、第二引数に処理を指定する
-
Auth::routes();
では、vendor/laravel/framework/src/Illuminate/Routing/Router.php
で定義されたルーティングが読み込まれる
生成されたコントローラとビューとエンドポイントの関係
生成されたエンドポイントとそれぞれのコントローラーとビューの役割と関係は次の通り
URI(エンドポイント) | HTTPメソッド | コントローラー名@アクション名 | 機能名 |
---|---|---|---|
/home | GET | HomeController@index | マイページ表示 |
/register | GET | RegisterController@showRegistrationForm | ユーザー登録表示 |
/register | POST | RegisterController@register | ユーザー登録 |
/login | GET | LoginController@showLoginForm | ログイン表示 |
/login | POST | LoginController@login | ログイン |
/logout | POST | LoginController@logout | ログアウト |
/password/reset | GET | ForgotPasswordController@showLinkRequestForm | パスワードリマインダー画面 |
/password/email | POST | ForgotPasswordController@sendResetLinkEmail | パスワードリマインド |
/password/reset/{token} | GET | ForgotPasswordController@showResetForm | パスワード再入力画面 |
/password/reset | POST | ForgotPasswordController@reset | パスワード更新 |
/email/verify | GET | VerificationController@show | Eメール認証画面 |
/email/verify/{id} | GET | VerificationController@verify | Eメール認証 |
/email/resend | GET | VerificationController@resend | Eメール認証メール再送信 |
※Eメール認証機能を使うには別途カラムが必要であったり、設定が必要となる
seederを使ってダミーデータを入れる
LaravelにはDBのテーブルにダミーデータを入れる機能がある
- ログイン機能を作る際にユーザー登録機能が存在しない時にうまく動くかテストする際に使用したりする
# seederファイル作成
$ php artisan make:seeder {適当な名前}
# usersテーブルにダミーデータを追加したい場合の例
$ php artisan make:seeder UsersTableSeeder
データを1つずつ入れる場合
/database/seeds
配下にUsersTableSeeder.php
が作成される
作成されたファイルの関数は空なので自分で追加する
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; // 関数でDBクラスを使えるように
use Carbon\Carbon; // 関数でCarbonクラスを使えるように
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// ここが空なので以下を追加する
DB::table('users')->insert([
// ランダムもしくは特定の文字列を入れることも可能
'name' => str_rand(10),
'email' => str_rand(10).'@example.com',
// bcryptでハッシュ化
'password' => bcrypt('password'),
// Carbonクラスのnowで現在時刻になる
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
}
}
Seederクラスを書き上げたら、Composerのオートローダを再生成するために、dump-autoload
コマンドを実行する必要がある
$ composer dump-autoload
seederファイルを編集したら次のコマンドで実行する
実行するとseederで定義したダミーデータが作成される
実行するたびにダミーデータが一つずつ生成される
$ php artisan db:seed --class=UsersTableSeeder
ダミーデータを削除し、DB再生成は次のコマンド
$ php artisan migrate:refresh --seed