I've been trying to solve this problem for several days but can't figure out the solution. Could you help me please? Laravel UserController code:
public function login(Request $request){
$request->validate(
[
'email' => 'required',
'password' => 'required',
]
);
if (Auth::guard()->attempt([['email' => $request->input('email')], ['password' => $request->input('password')]])) {
$request->session()->regenerate();
$user = User::where('email', $request->input('email'));
if($user != null){
$user->isLogin = true;
$user->save();
return response()->json(['id'=>$user->id], 200);
}
return response()->json(['message'=>'User not found'],404);
}
return response()->json(['error' => 'Invalid credentials'],400);
}
React api fetch with axios:
const logIn=(e) =>{
e.preventDefault();
axios.post('/api/login', {
email: email,
password:password
}).then(response => {
if(response.status==200){
console.log(response.data)
dispatch(login(response.data.id))
}
}).catch(error=>{
console.log(error.message)
})
}
Laravel login in routs:
Route::post('/login', [UserController::class, 'login']);
Laravel log:
[2022-08-10 11:36:34] local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from users
where (0
= id) limit 1) {"exception":"[object] (Illuminate\Database\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from users
where (0
= id) limit 1) at C:\xampp\htdocs\socialmedia\vendor\laravel\framework\src\Illuminate\Database\Connection.php:742)
you are passing multidimensional array in where condition
Can you try changing this lines
if (Auth::attempt(['email' => $request->input('email'),
'password' => $request->input('password')])) {
//here we are getting the first value
User::where('email', $request->input('email'))->first()
You can see this doc for more info related to login https://laravel.com/docs/9.x/authentication#authenticating-users