hanifeoglu Role-yetki kullanacaksanız tek login rotası işinizi görür.
public function login(LoginRequest $request)
{
$credentials = $request->validated(['email', 'password']);
if(Auth::attempt($credentials, $request->validated('remember'))) {
$request->session()->regenerate();
if($request->user()->hasRole('admin')) {
return redirect()->route('admin.dashboard');
}
return redirect()->route('home');
}
return back()->withErrors(__('User not found.'));
}
Route::get('/', HomeController::class)->name('home');
Route::post('login', [LoginController::class, 'login'])->middleware('guest')->name('login');
Route::delete('logout', [LoginController::class, 'logout'])->middleware('auth')->name('logout');
// Admin rotaları
Route::prefix('admin')->as('admin.')->middleware(['auth', 'role:admin'])->group(function() {
Route::get('dashboard', DashboardController::class)->name('dashboard');
Route::resource('users', UserController::class);
Route::resource('categories', CategoryController::class);
// ...
});
// Müşteri rotaları
Route::middleware(['auth', 'role:customer'])->group(function() {
Route::resource('profile', ProfileController::class)->only(['edit', 'update']);
Route::resource('orders', OrderController::class)->only(['index', 'show']);
// ...
});
// Uygulama rotaları...
app/Http/Middleware/RedirectIfAuthenticated.php:
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
if($request->user()->hasRole('admin')) {
return redirect()->route('admin.dashboard');
}
return redirect()->route('home');
}
}
return $next($request);
}