現時点で一般ユーザのダッシュボード /dashboard は ルート定義の web.php から直接ビューを呼び出しています.ここでは,ダッシュボードのコントローラを作成して,コントロラーからビューを呼び出すように変更します.
まず次のコマンドで一般ユーザ用の DashboardController を生成します.ただし,この後3つのガードに分けることを考慮して,一般ユーザ用のコントローラは app/Http/Controllers ではなく app/Http/Controllers/User に設置するようにしていることに注意して下さい.
vagrant@ubuntu2204 laravelAuth $ php artisan make:controller User/DashboardController ⏎
INFO Controller [app/Http/Controllers/User/DashboardController.php] created successfully.
vagrant@ubuntu2204 laravelAuth $
生成されたコントローラは次の通りです.上のコマンドではコントローラの設置場所を指定しました.そのことが3行目に反映されています.
app/Http/Controllers/User/DashboardController.php
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
//
}
コントローラに index 関数を追加して,ビューを呼び出すコードを記載します.
app/Http/Controllers/User/DashboardController.php
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function index()
{
return view('dashboard');
}
}
ルートの定義を変更します.これまでルートから直接ビューを呼び出していた部分(22〜24行目)を削除するかコメントアウトします.その代わりに,コントローラの index 関数を呼び出すようにします.この定義でも /dashboard にアクセスするためにはメール検証されたユーザ (verified) が,ログインした状態 (auth) であることが求められるようにしています.
routes/web.php
<?php
use App\Http\Controllers\ProfileController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\User\DashboardController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
// Route::get('/dashboard', function () {
// return view('dashboard');
// })->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::middleware('auth', 'verified')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
});
require __DIR__.'/auth.php';
Web サーバを再起動して動作を確認して下さい.これまでと動作に変化はなく,ログインすれば /dashboard が表示されるはずです.
vagrant@ubuntu2204 laravelAuth $ php artisan serve --host=192.168.56.101 --port=8000 ⏎
INFO Server running on [http://192.168.56.101:8000].
Press Ctrl+C to stop the server