First, i have login controller like this
<?php
namespace AppHttpControllersUserAuth;
use AppHttpControllersController;
use AppHttpRequestsUserAuthLoginFirst;
use AppHttpRequestsUserAuthLoginSecond;
use AppModelsUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesSession;
use InertiaInertia;
class Login extends Controller
{
public function Interface()
{
if(!Session::get('login.section'))
Session::put('login.section', 'first');
if(Session::get('login.section') == 'first')
return self::FirstInterface();
else if(Session::get('login.section') == 'second')
return self::SecondInterface();
}
public function Action(First $first_request, Second $second_request)
{
if(Session::get('login.section') == 'first')
return self::FirstAction($first_request);
else if(Session::get('login.section') == 'second')
return self::SecondAction($second_request);
}
public function FirstInterface()
{
return Inertia::render('User/Auth/Login/First');
}
public function FirstAction(First $request)
{
Session::put('login.email', $request -> email);
$user = User::where('email', $request -> email) -> first();
if($user)
{
Session::put('login.name', $user -> name);
Session::put('login.section', 'second');
return redirect('login');
}
else
{
return redirect('login')
-> with('error', 'Email unregistered');
}
}
public function SecondInterface()
{
return Inertia::render('User/Auth/Login/Second');
}
public function SecondAction(Second $request)
{
$user = User::where('email', Session::get('login.email')) -> first();
if(Hash::check($request -> password, $user -> password))
{
Session::forget('login');
Auth::login($user);
return redirect('home');
}
else
{
return redirect('login')
-> with('error', 'Login failed');
}
}
}
And i have route like this
<?php
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesRoute;
use InertiaInertia;
Route::get('/', function () {
return view('welcome');
});
if(Auth::check()) {
Route::get('home', function() {
return Inertia::render('home');
})
-> name('Home');
}
else {
Route::prefix('/')
-> group(base_path('routes/register.php'));
Route::prefix('/')
-> group(base_path('routes/login.php'));
}
When i try to login, i believe that Auth::login() already work, because when i add Auth::check in same function like this, Auth::check() return true and “Already Login” will appear
public function SecondAction(Second $request)
{
$user = User::where('email', Session::get('login.email')) -> first();
if(Hash::check($request -> password, $user -> password))
{
Session::forget('login');
Auth::login($user);
if (Auth::check())
{
dd('Already Login');
}
return redirect('home');
}
else
{
return redirect('login')
-> with('error', 'Login failed');
}
}
But, when i redirect into ‘/home’, Auth::check() in my route always return false
How can i fix that?
New contributor
Zain Hibattulloh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.