見出し画像

Laravel 5.7 でログイン機能/ユーザ登録機能を実装する

今回やること
・ユーザ情報を保存する「users」テーブル作成
・Laravelでログイン機能を実装
・seederでusersテーブルにダミーデータ作成
・ログインしてみる
・ユーザ登録してみる
前提
・Laravelが動く環境がすでにあること
・DBの設定が完了していること
・Laravel のバージョンは5.7


現在は下記の画面が表示されている状態です。

完成デモ動画です。


それでは始めます。

--- 🖥 ---

ユーザ情報を保存する「users」テーブル作成

まず最初にユーザ情報を保存する「users」テーブルを作成します。

Laravelではデフォルトで「users」テーブルと「password_restets」テーブルを作成するためのマイグレーションファイルが準備されています。
(src/database/migrations 内にあります)

そのため、下記コマンドを実行するだけでusersテーブルが作成されます。

php artisan migrate

こちらを実行した後にデータベースを確認すると、下記3テーブルが作成されています。

・migrations
・password_resets
・users

usersテーブルには下記8個のフィールドが存在します。

・id
・name
・email
・email_veifield_at
・password
・remember_token
・created_at
・updated_at

これでテーブルの作成は完了です。


Laravelでログイン機能を実装

次に、Laravelでログイン機能を実装します。Laravelではコマンド一つでログイン機能のviewやcontrollerを作成してくれます。以下実行します。

php artisan make:auth

下記メッセージが表示されたら成功です。

Authentication scaffolding generated successfully.

このコマンドを実行することで、下記のファイルが自動で作成されます。

resources/views/home.blade.php
resources/views/layouts/app.blade.php
resources/views/auth/ 内に複数のviewを作成
app/Http/Controllers/HomeController.php
app/Http/Controllers/Auth/ 内に複数のControllerを作成

また、web.php内に認証用のルートが記載されます。

ここで一旦Laravelのページにアクセスしてみると、下記画像のように右上に「LOGIN」と「REGISTER」の文字が表示されています。

「LOGIN」をクリックすると下記のようなログイン画面が表示されます。

「REGISTER」をクリックすると下記のように登録フォーム画面が表示されます。

以上でLaravel側での表示は完成です。


seederでusersテーブルにダミーデータ作成

次にログイン用のダミーデータを準備します。usersテーブルに入れるデータ登録用のseederを準備します。下記コマンドを実行します。

php artisan make:seeder UsersTableSeeder

すると、「/database/seeds」ディレクトリ配下に「UsersTableSeeder.php」というファイルが作成されます。こちらのファイルを下記のように編集してください。

<?php
use Carbon\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class UsersTableSeeder extends Seeder
{
   /**
    * Run the database seeds.
    *
    * @return void
    */
   public function run()
   {
       DB::table('users')->insert([
           'name' => 'testuser',
           'email' => 'testuser@example.com',
           'password' => bcrypt('testuser0123'),
           'created_at' => Carbon::now(),
           'updated_at' => Carbon::now(),
       ]);
   }
}

ファイルの修正ができたら、下記コマンドを実行します。

php artisan db:seed --class=UsersTableSeeder

コマンド実行後にusersテーブルを見てみると、seederファイルで設定したデータが登録されています。

これでダミーデータの登録は完了です。


ログインしてみる

では実際に今作成したユーザでログインしてみましょう。
ログインページ(/login)を開きます。

下記入力し、「Login」をクリックします。

E-Mail Address:testuser@example.com
Password:testuser0123

無事ログインできると、下記のような画面に遷移します。

ログインメッセージと、右上にユーザ名が表示されます。

ログアウトする場合は、右上のユーザ名→ログアウト をクリックでログアウトできます。

以上でログイン完了です。


ユーザ登録してみる

次に画面からユーザ登録してみます。登録ページ(/register)を開きます。

フィールドに情報を記入します。今回は下記のように入力しました。

Name:kevin
E-Mail Address:kevin@example.com
Password:kevin54
Confirm Password:kevin54

入力し「Register」をクリックすると、会員登録が完了し、ログインされます。

データベースのusersテーブルを確認すると、今作成したユーザのデータが登録されています。

以上でユーザ登録完了です。


ということで、非常に簡単ですがLaravelでのログイン機能/ユーザ登録機能の実装の説明を終わります。

今回は説明していないですが、こちらを応用して
ログインしたユーザにしか表示させないページの設定
ユーザ登録はメールを送信し、メールに記載しているURLをクリックしないとユーザ登録させない
などができるようになります。

↑はおいおい書いていきたいなと思いますので、またよろしくお願いします😊


GitHubリポジトリ

今回作成したソースはGithubにて公開しています。下記リンクよりご確認ください。(lerning-1ブランチです。)

https://github.com/KoushiKagawa/laravel-learning/tree/learning-1


間違いや、もっとこう書いた方が良いよ!といったご指摘はコメント欄かtwitterのDMいただけると喜びます!


読んでいただきありがとうございます。