Laravel type error
Laravelda kullanıcı girişi yapmaya çalışıyorum. Fakat altaki hatayı aldım ve takılıp kaldım.
TypeError
Illuminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable, stdClass given, called in C:\xampp\htdocs\appveweb\blog\vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php on line 332
auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],
LoginController.php
use App\Http\Controllers\Controller;
use http\Client\Curl\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
public function login(Request $request){
$email=$request->email;
$password=$request->password;
$remember=$request->remember;
//$user=User::where('email',$email)->first();
//Bu kodu çalıştırdığımda http\Client\Curl\User bulunamadı diye hata alıyorum.
$user=DB::table('users')->where('email',$email)->first();
if ($user && sha1($password)===$user->password){
Auth::login($user,true);
return route('admin');
}
else{
dd('Bilgiler Hatalı');
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Şu şekilde değişiklik yaparak düzeltim
LoginController Sayfamda;
use http\Client\Curl\User;
Komutunu şu şekilde değiştirdim;
use App\Models\User;
Bu değişiklikten sonra $user değişkenimi şu şekilde değiştirdim
$user=User::where('email',$email)->first();
Bu düzeltmleri yaptıktan sonra SQL hatası aldım user tablomda remember tokenin olmadığına dair. Şuanda kurduğum yapıda şifre sıfırlama işlemi olmayacak bunun için kaldırmıştım. Tekrar ekleyince sorunum çözüldü. Ama yukarıda Model kullanmadan yapıyordum neden hata aldığım halen anlayamadım.
users.table migration
$table->id();
$table->string('name');
$table->string('last-name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();