前回、マルチログインの実装に取り掛かったが思ったより手こずっていて。
でも手も足も出ない状態でもないので、進めていきましょう。
引き続き、以下のページを参考に、というかこのページの内容をそのまま実装しているだけ。
前回の最後の状態では、ユーザ登録画面やログイン画面は表示されるものの、
一般のユーザマスタにしかアクセスしない。
■bladeファイルの修正
/admin/registerにアクセスすると、Controller\admin\auth\RegisteredUserControlle.phpのcreateメソッドが実行される。
Controllerからアクセスするbladeはviews\auth\register.blade.php だが、
管理者用のbladeを用意してそちらにアクセスするようにする。
まずはviewsフォルダ内にAdminフォルダを作成し、Authフォルダをコピーする。
register.blade.php内のリクエスト送信先をadmin.registerに変更する。
<form method="POST" action="{{ route('admin.register') }}">
<a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('admin.login') }}">
他のファイルも同様にadminにアクセスするように修正する。
■Controllerファイルの修正
app\Http\Controllers\Admin\Auth\RegisteredUserController.php内のviewの参照先をadminに修正する。
return view('admin.auth.register');
フォルダ内のコントローラ内のview参照を同様に修正する。
■管理者ページのアクセス確認
admin/register にアクセスして、管理者用のページが表示されることを確認する。
■アクセス先のテーブル変更
登録時の保存先をユーザマスタから管理者用マスタに変更する。
\app\Http\Controllers\Admin\Auth\RegisteredUserController.php
use App\Models\Admin;
store関数
$user = Admin::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
■動作確認
動かしてみると、管理者登録の登録ボタンが動作しない。
では通常ユーザは・・と試してみると同じく動作しない。
ルーティングも確認してみたが、正しく設定されているように見える。
GET|HEAD register ........... register › Auth\RegisteredUserController@create
POST register ............. Auth\RegisteredUserController@store
GET|HEAD admin/register ..... admin.register › Admin\Auth\RegisteredUserController@create
POST admin/register ....... admin. › Admin\Auth\RegisteredUserController@store
色々いじってみたのだが、参考にならない原因でした。
blade.php の送信ボタンのtypeがbuttonになっていたのを、submitに変更したら登録できるようになった。
今までもここは変更していないはずなんだが・・
通常ユーザ登録と管理者ユーザ登録ができたところは確認できた。
できていないこと
- 管理者ログイン画面で通常ユーザでログインできてしまう問題の対応
- 管理者ユーザのみ削除可能とする対応
- だれでも管理者ユーザを登録できてしまう?点の制御
続く