LoginSignup
2
6

More than 3 years have passed since last update.

Laravel ユーザー登録、ログイン・ログアウト機能(Seederでユーザー生成)

Last updated at Posted at 2020-02-08

ユーザー登録、ログイン・ログアウト機能生成

ユーザー登録やログイン・ログアウト機能はコントローラーやビューを作る必要があるが、
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

データをまとめていっぱい作りたい場合は下記参考

Laravel ダミーデータ登録(seeder, factory, faker)

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6