システム管理者がログインの操作を行うためのコントローラを作成します.このとき,Admin フォルダにコントローラを作成することに注意して下さい.
vagrant@ubuntu2204 laravelAuth $ php artisan make:controller Admin/LoginController ⏎
INFO Controller [app/Http/Controllers/Admin/LoginController.php] created successfully.
vagrant@ubuntu2204 laravelAuth $
生成されたコントローラを確認しておきます.
app/Http/Controllers/Admin/LoginController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LoginController extends Controller
{
//
}
管理者のログインやログアウトの処理を行うためのコントローラを次の通り編集します.関数 create
はログインページの表示,store
はログイン処理,destroy
はログアウトの処理です.
app/Http/Controllers/Admin/LoginController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\AdminLoginRequest;
use Illuminate\Http\RedirectResponse;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
class LoginController extends Controller
{
/**
* ログイン画面
*/
public function create(): View
{
return view('admin.auth.login');
}
/**
* ログイン
*/
public function store(AdminLoginRequest $request): RedirectResponse
{
$request->authenticate();
$request->session()->regenerate();
return redirect()->intended(route('admin.dashboard'));
}
/**
* ログアウト
*/
public function destroy(Request $request): RedirectResponse
{
Auth::guard('admin')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return to_route('welcome');
}
}