I generally add a home route to redirect the users to theirs proper "home" based on some sort of role, something like this:
<?php
// routes/web.php
Route::get('home', 'HomeController@redirect')
->name('home'); // I usually add the name so I can use the route(...) helper
Then in your HomeController:
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function redirect()
{
if (! auth()->check() ) {
return redirect()->to( '/auth/login' );
}
if (auth()->user()->is_admin) {
return redirect()->to( '/admin-dashboard' );
}
return redirect()->to( '/dashboard' );
}
}
If you are sure that you only need to redirect the user on login, there is an easier path, just override the authenticated(...) in your Auth\LoginController, like so:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
// protected $redirectTo = '/home'; // will be overriden by the authenticated method
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
if ($user->is_admin) {
return redirect()->to('/admin-dashboard');
}
return redirect()->to('/dashboard');
}
}