Skip to main content

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" -->

新しいログイン画面の作成手順

  1. Guard を作成: config/auth.php に Guard を追加
  2. コントローラーを作成: 既存の LoginController.php をコピーして新規コントローラーを作成
  3. 遷移先を変更:
$this->redirectTo = '/home2';
return redirect('/login2');
  1. Guard を指定:
protected function guard()
{
    return Auth::guard('member');
}
  1. ルーティングを設定:
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');
    });

認証設定

  1. 認証が必要なルートに Guard を指定:
Route::middleware(['web', 'auth:member'])
  1. 認証失敗時のリダイレクト先を bootstrap/app.php に設定:
->withMiddleware(function (Middleware $middleware): void {
    Authenticate::redirectUsing(function (Request $request): ?string {
        return $request->is('home2') ? '/login2' : null;
    });
})