Laravelのユーザー認証・管理をlaravel-adminとの共存で構築する

少し前からlaravel-adminをポチポチと触っています。何がどのようにできるのか?大体が分かってきました。(そもそもLaravel自体はじめてなので理解が遅いです。。。)

laravel-adminを使えば、簡単にCURDを利用した管理画面が構築できて便利だと分かりました。ただ、laravel-adminのユーザー管理は、あらかじめアカウントを用意している管理者向けであって、第三者の一般ユーザーが任意で登録や変更をする機能が不足しています

通常なら自前で作ったり、他の便利なパッケージを使うのでしょうが、Laravelの事をよく分かっていない私は、勉強がてらLaravel標準の認証(Auth)機能を利用することにしました。

一般ユーザー向けの認証機能はLaravel標準に任せて、管理やデータベースのテーブルはlaravel-adminに任せればいいのかな?そんな感じで進めていきます。

一般ユーザーの登録機能を構築する

Laravel Authをインストール

はじめから導入されているので、利用するようにコマンドから設定するだけです。

php artisan make:auth

コマンドの実行で Controller、Model、Viewが作成され、Routeが新しく設定されました。

laravel-adminとの共存

これらのファイルを応用しながら、ユーザーテーブルだけはlaravel-adminのものに切り替えてみたいと思います。

  • Laravelのユーザーテーブル:users (↓を利用する)
  • laravel-adminのユーザーテーブル:admin_users

2つのテーブルを比較しても、違いはほぼありません。emailフィールドだけ追加しました。

後は、config/auth.php の guards や providers を、laravel-adminのものを利用するように変更しました。

laravel-admin認証機能 -3-

すんなりと、Laravelの認証機能とlaravel-adminの認証機能の融合ができました。

laravel-admin認証機能 -1-

登録ももちろん、admin_usersテーブルに行われます。

laravel-admin認証機能 -2-

パスワードの再発行も正常に動作しました。

以上で簡単に共存することができました。

ただ、このままでは幾つかの課題が残っています。

認証機能の課題

  • ユーザー登録時にRoleが設定できてい無い
  • メールアドレスの確認機能が無い
  • ユーザープロフィール情報の変更機能が無い
  • (メールアドレスの変更機能が無い)
  • (パスワードの変更機能が無い)
  • (退会機能が無い)

などなどです。

ポータルサイト的なサービスの場合、これらの機能が最低限必要となりますが、その辺りが標準機能では実装されていませんね。

今後もLaravelの勉強がてら、いろいろと調べてみたいと思います。