blocs/admin: 複数ログイン画面の追加
blocs/admin: 複数ログイン画面の追加
LaravelのGuard機能を使って、管理者用とメンバー用など複数のログイン画面を作成する方法を説明します。
前提条件: blocs/admin がインストール済みであること
テンプレートの一覧
| テンプレート名 | 用途 |
|---|---|
| include/upper.html | 画像が画面上部に配置されたレイアウト |
| include/background.html | 画像を背景として表示するレイアウト |
| include/left.html | 画像が画面左側に配置されたレイアウト |
| include/form.html | ログインフォームの部品テンプレート |
| login.blocs.html | ログイン画面のメインテンプレート |
ログイン画面のデザイン変更
data-include でテンプレートを切り替えます。
<!-- data-include="include/background.html" -->
新しいログイン画面の作成手順
- Guard を作成:
config/auth.phpに Guard を追加 - コントローラーを作成: 既存の
LoginController.phpをコピーして新規コントローラーを作成 - 遷移先を変更:
$this->redirectTo = '/home2';
return redirect('/login2');
- Guard を指定:
protected function guard()
{
return Auth::guard('member');
}
- ルーティングを設定:
Route::middleware(['web'])
->group(function () {
Route::get('/login2', [Login2Controller::class, 'showLoginForm'])->name('login2');
Route::post('/login2', [Login2Controller::class, 'login2']);
Route::match(['get', 'post'], '/logout2', [Login2Controller::class, 'logout2'])->name('logout2');
});
認証設定
- 認証が必要なルートに Guard を指定:
Route::middleware(['web', 'auth:member'])
- 認証失敗時のリダイレクト先を
bootstrap/app.phpに設定:
->withMiddleware(function (Middleware $middleware): void {
Authenticate::redirectUsing(function (Request $request): ?string {
return $request->is('home2') ? '/login2' : null;
});
})