Laravel

Laravel8、Jetstreamによるユーザー登録とカスタマイズ方法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel8 の Jetstream によるユーザー登録とカスタマイズをする方法について書いていきます。

環境

"laravel/framework": "^8.54",
"laravel/jetstream": "^2.4",

Jetstream とは?

ユーザー登録や、ログインなどの機能を構築してくれます。

ようするにコマンドを打ったら、アプリケーション上でいろんな機能が使えるようになるということです。

Jetstream は、Laravel に美しく設計されたアプリケーションのスカフォールドを提供し、ログイン、ユーザー登録、メール検証、2要素認証、セッション管理、Laravel Sanctum を介した API サポート、およびオプションとしてチーム管理機能を含みます。Jetstream は TailwindCSS を使用して設計されており、Livewire(日本語)もしくは Inertia.js 駆動のフロントエンドスカフォールドから選択できます。

JetStream の日本語ドキュメント

Jetstream をインストールする

コマンドでインストールします。

composer require laravel/jetstream
php artisan jetstream:install livewire

コマンドで JS 関連のインストールとビルド、マイグレーションの実行をします。

npm install && npm run watch
php artisan migrate

これで Jetstream のインストールは完了しました。

登録画面やログイン画面などの機能がルーティングに、これで追加されたのが確認できます。

コマンド

php artisan route:list

これ以降では、これで作成した雛形をもとにカスタマイズする方法について書いていきます。

users テーブルに保存する情報を追加したい

【注意!】

マイグレーションファイルを直接書き換えています。

もうすでに本番稼働しているサービスなどで変更するための方法ではありませんので、注意してください。

本番環境にデプロイしてない段階であれば、なんの問題もありません。

マイグレーションファイルに追記する

users テーブルは、最初から必要最低限の認証に必要なデータや、「使うであろう」カラムが用意されています。

database/migration/20141012000000createuserstable.php

を開いてみると、色々なカラムが生成されるように設定されていることが分かります。

今回、例えば「性別」を入力したい場合、「gender」というカラムを追加してみましょう。

//これを追記する
//入れる場所は最後ではなく、カラムの順番としてわかりやすいところにしたい
$table->string('gender')->nullable();

全体(gender カラムを追加後のマイグレーションファイル)

        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->foreignId('current_team_id')->nullable();
            $table->string('profile_photo_path', 2048)->nullable();
            //これを追記する
            //入れる場所は最後ではなく、カラムの順番としてわかりやすいところにしたい
            $table->string('gender')->nullable();
            $table->timestamps();
        });

マイグレーションファイルを変更したらコマンドを打つ

コマンドを打ちます。

php artisan migrate:fresh

マイグレーションをしますが、fresh オプション付きで打ちます。

開発環境なので、打てるコマンドで、決して本番環境では打ってはダメということだけ覚えておきましょう。

すでに本番環境で稼働しているときは「カラムを追加する」マイグレーションファイルを作ってコマンド

php artisan migrate

になりますが、今回は作りはじめなので、このやり方をしています。

参考記事

⇨Laravel でデータベースを作成する方法(マイグレーション)

登録時に gender を保存する

App/Http/Controllers/Auth/RegisterController.php を開いて

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'gender' => $data['gender'], //追加
            'password' => Hash::make($data['password']),
        ]);
    }

と追加します。

User モデルに追記

ホワイトリストに追加します。

App\Models\User.php or App\User.php

protected $fillable = [
    'name', 'email', 'password', 'gender' //追加
];

登録時に入力フォームを追加

resources/views/auth/register.blade.php

<input name="gender" />

上記のように、name を gender と指定した input タグ(select タグなどでも可)を用意して入力できるようにします。

実際に入力してみて保存できれば OK です。

email ではなくログイン ID でログインさせたい

まず config で設定を変更する

config/fortify.php

49行目あたりにこんな記述があります。

 'username' => 'email',

ここを、

  'username' => 'lid'
  // 'username' => 'ログインさせたいカラム名'

ログインページや登録ページを編集する

コマンド

php artisan vendor:publish --tag=jetstream-views

auth/login.blade.php の修正

<input name="email" />
<input name="lid" />

まとめ

結構登録周りのカスタマイズは Laravel6 と変わっているような、変わっていないような感じですね。

日々アップデートしていきます。

こういうカスタマイズしてみたいけど情報見つからないと言う人は Twitter からご連絡くださいませ。

関連記事

Laravel でユーザー登録時に色々なデータを保存する方法

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する