Fortify認証
解決したいこと
laravel Fortifyで結論から言うと管理者画面用のログイン機能を実装したいです。
一般ユーザー用のサイトは作り終わったので管理者画面も同じくfortifyでログイン機能をつけたいのですがうまくいきません。
エラーメッセージはないのですがログインする際に一般ユーザー用のindex.blade.phpに遷移されます。それを管理者画面用のdashboard.blade.phpに遷移するようにしたい。
管理者用画面はアカウントを登録する画面は不要なのでテストする際はphpmyadminでアカウントを挿入してそれでログインしてみて確認してました。
Providers/FortifyServiceProvider.php
public function boot(): void
{
Fortify::createUsersUsing(CreateNewUser::class);
// 登録画面の設定
Fortify::registerView(function () {
return view('auth.register');
});
// ログイン画面の設定
Fortify::loginView(function () {
return view('auth.login');
});
// カスタム認証ロジック(管理者認証)
Fortify::authenticateUsing(function (Request $request) {
Log::info('Attempting login for admin: ' . $request->email); // ログ:メールアドレス確認
// 入力されたメールアドレスで管理者を検索
$admin = Admin::where('email', $request->email)->first();
if (!$admin) {
Log::info('Admin not found: ' . $request->email); // ログ:管理者が見つからない場合
return null;
}
// パスワードの一致を確認
if (Hash::check($request->password, $admin->password)) {
Log::info('Admin authenticated successfully: ' . $admin->email); // ログ:認証成功
return $admin;
} else {
Log::info('Password mismatch for admin: ' . $request->email); // ログ:パスワードが一致しない場合
return null;
}
});
// ログイン後のリダイレクト先の設定
Fortify::redirects('login', function () {
if (Auth::guard('admin')->check()) {
Log::info('Redirecting admin to dashboard'); // ログ:管理者用リダイレクト
return '/admin/dashboard'; // 管理者用ダッシュボードにリダイレクト
} else {
Log::info('Redirecting user to home'); // ログ:一般ユーザー用リダイレクト
return '/'; // 一般ユーザー用のホームページにリダイレクト
}
});
// ログイン試行制限
RateLimiter::for('login', function (Request $request) {
$email = (string) $request->email;
return Limit::perMinute(10)->by($email . $request->ip());
});
}
自分で試したこと
config/auth.phpそれぞれに'admins'=>[]を追加したりもしました。まだ初心者で詳しくはないので教えていただけると助かります。