少し前から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の認証機能とlaravel-adminの認証機能の融合ができました。

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

パスワードの再発行も正常に動作しました。
以上で簡単に共存することができました。
ただ、このままでは幾つかの課題が残っています。
認証機能の課題
- ユーザー登録時にRoleが設定できてい無い
- メールアドレスの確認機能が無い
- ユーザープロフィール情報の変更機能が無い
- (メールアドレスの変更機能が無い)
- (パスワードの変更機能が無い)
- (退会機能が無い)
などなどです。
ポータルサイト的なサービスの場合、これらの機能が最低限必要となりますが、その辺りが標準機能では実装されていませんね。
今後もLaravelの勉強がてら、いろいろと調べてみたいと思います。