Open4

Laravel 10+Jetstreamのユーザー削除機能のカスタマイズ

DaiNakaDaiNaka

やりたいこと

Laravel 10でJetstreamを使った認証方式を実装しているため、ユーザーを削除するにはパスワード入力が求めれる。
しかし、SNS認証もできるようにしているため、SNS認証している時にはパスワード入力が求められないようにしたい。

環境

  • XAMPP 3.3.0
  • PHP v8.2.0
  • Laravel v10.13.5
  • JetStream v3.2

SNS認証を実装

DaiNakaDaiNaka

参考記事

泣けてくる😢
https://zenn.dev/yamabiko/articles/jetstream-socialite

考察

私の今の実力では上の記事のようなことを理解しながら進めるのは厳しい。
ただ、コピペで実装するのも違うと思うので、ひとまず別のアプローチを要検討。

検討

ソーシャルでログインしている時には自分でユーザー削除をする方法を検討。

DaiNakaDaiNaka

JetStreamのユーザー削除の動き

プロファイルページを開き、最下部にある「アカウント削除」ボタンをクリックすると、削除用のモーダル画面が表示されて、そこにログインしているユーザーのパスワードを入力して「アカウント削除」ボタンをクリックすることで削除される。

詳細な動きの考察

一つ目の「アカウント削除」ボタンはモーダル画面の開閉を行うためのボタンになっている

delete-user-form.blade.php
<x-danger-button class="ml-3" wire:click="confirmUserDeletion" wire:loading.attr="disabled">
    {{ __('Delete Account') }}
</x-danger-button>

二つ目の「アカウント削除」ボタンはJetStreamの「deleteUser」を実行するボタンになっている

delete-user-form.blade.php
<x-danger-button class="ml-3" wire:click="deleteUser" wire:loading.attr="disabled">
    {{ __('Delete Account') }}
</x-danger-button>

二つ目の「アカウント削除」ボタンを押した後はパスワードのバリデーションチェックを行い、一致していればアカウントの削除を行うような動きをしている

DaiNakaDaiNaka

モーダル画面を表示させずアカウント削除

一つ目のアカウント削除ボタンをクリックするとモーダル画面が表示されていたが、アカウント削除ボタンをクリックすると、ユーザー削除する動きを実装してみる。