通販サイト等のシステムには、基本的にシステムの利用するユーザの管理やログイン機能という物が存在します。
この記事を読んでいる皆さんも、IDやメールアドレス、パスワードを入力してログインしたことはあるのではないでしょうか。ここでは超簡単なLaravel式ユーザ登録からログイン機能の作成方法を紹介していきます。
実行環境
Laravel5では、ユーザの作成機能やログイン機能が簡単に作れるので紹介したいと思います。
OS:Windows10
XAMPP
PHP:7.1.29
mysql Ver 15.1 Distrib 10.2.10-MariaDB, for Win64 (AMD64)
Laravel Framework 5.8.38
プロジェクトの作成
今回は、「laravel_sample_system」という名前でプロジェクト作成して実装していきます。
※既にプロジェクトを作ってある人は飛ばしてください。
コマンド
composer create-project --prefer-dist laravel/laravel laravel_sample_system "5.8.*"
※Laravelの環境構築についてはこちら
データベースの作成
今回は、「sample_system」というDBをphpmyadminで作成してユーザ管理していきます。
まず、phpMyAdminを開き、左サイドバー上部にあるNewをクリックします。
※既にDBを作成している人は、飛ばしてください。
次にデータベース名に「sample_system」を入力し、
その左側のセレクトボックスで「utf8mb4_general_ci」を選択して「作成」ボタンを押します。
※この時点ではDBの中身は空です。
次にプロジェクトのディレクトリにある「.env」ファイルを開いて以下のように変更して保存します。
DB_DATABASE=laravel
↓
DB_DATABASE=sample_system
認証機能・ usersテーブルの作成
認証機能の作成
プロジェクトのディレクトリで以下のコマンドを実行します。
php artisan make:auth
usersテーブルの作成
Laravelではマイグレーションを行うことによってユーザを登録する為のテーブル(users)を作成することができます。
マイグレーションとは、一度定義したテーブルを簡単にDBで作成することができる機能です。
詳しくは別の記事で紹介したいと思います。
以下のコマンドでusersテーブルを作成することができます。
php artisan migrate
※既にusersテーブルなどが作られている場合、エラーになります。
その場合、そのまま既に作られているusersテーブルを使用するか、一度usersテーブルの名称を変換させてから実施してみてください。
上記コマンドを実行後にphpMyAdmin上でDBを確認すると以下の画像のようになります。
カラム名 | 用途 |
id | プライマリキー |
name | ユーザの名称 |
ログインやパスワードリセットの際に使用するメールアドレス | |
email_verified_at | メールによる本人確認日時 |
password | パスワード |
remember_token | クッキー情報の記録 |
created_at | レコード作成日時 |
updated_at | レコード更新日時 |
一部Laravelが使う為のカラムがありますが、カラムを追加したりすることでシステム固有のデータを保持できるようになります。
実装の確認
上記まででユーザの登録機能と認証機能の作成ができました。
ユーザ登録してログインするところまで確認してみましょう!
apache等で特に設定を変更していなければ以下のアドレスでユーザ登録画面を開くことができます。
http://localhost/laravel_sample_system/public/register
次に各種入力して「Register」ボタンを押してみましょう。
これだけでユーザの登録が可能です。
DBを見てみましょう。
以下の様になっていれば登録されています。
パスワードは誰でも簡単に確認できないようにハッシュ化して登録されます。
次にログイン機能を試してみましょう。
画面右上のユーザ名のリンクにカーソルをあわせると「Logout」が表示されるのでクリックするとログアウトします。
次に画面右上の「LOGIN」リンクをクリックすることでログイン画面に遷移することができます。
この画面で先ほど登録したユーザのメールアドレスとパスワードを入力して「Login」ボタンを押すとログインすることができます。
カスタマイズする場合
以下にユーザやログイン画面に関するプログラムがあるので項目を増やす場合は、こちらをカスタマイズしてみてください。
コントローラ(Controller)
ディレクトリ
app\Http\Controllers\Auth
<RegisterController.php>
ユーザ登録画面のコントローラです。
ユーザ登録項目を増減する場合は、ここを編集する必要があります。
<LoginController.php>
ログイン画面のコントローラです。
ログイン項目を変更する場合は、ここを編集する必要があります。
<VerificationController.php>
ログイン後の画面のコントローラです。
ビュー(View)
ディレクトリ
resources\views\auth
<register.blade.php>
ユーザ登録画面のビューです。
登録項目やレイアウトを変更、追加する場合は、こちらを修正します。
<login.blade.php>
ログイン画面のビューです。
ログイン項目やレイアウトを変更、追加する場合は、こちらを修正します。
<verify.blade.php>
ログイン後の画面のビューです。
項目やレイアウトを変更、追加する場合は、こちらを修正します。
モデル(Model)
app\User.php
(Userモデル)
主にusersテーブルとのやりとりを担うクラスです。
まとめ
Laravel5では、ユーザ登録機能やログイン認証機能は、コマンドのみで作れることができます。
ここでは触れませんでしたが、「パスワードリセット」機能も追加されています。
コマンド実行後にどのようなファイルが作成されているかなどよく見ていきましょう。
実際のシステムでは、ユーザ登録はログイン後のみにしたりと変更を加える必要があります。
認証機能のカスタマイズに関しては、別途記事にしていきたいと思います。