I am using solcialite to login Laravel via Gihub, but there is problem to login. I get a error: Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, null given, called in /var/www/html/testio/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 292
My LoginController:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Socialite;
use App\User;
use Auth;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* Redirect the user to the GitHub authentication page.
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
$github_user = Socialite::driver('github')->user();
$user = $this->userFindorCreate($github_user);
Auth::login($user, true);
return redirect('/home');
// $user->token;
}
public function userFindorCreate($github_user){
$user = User::where('provider_id', $github_user->id)->first();
if(!$user){
$user = new User;
$user->name = $github_user->getName();
$user->email = $github_user->getEmail();
$user->provider_id = $github_user->getid();
$user->save();
}
}
}
My User.php model:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Foundation\Auth\User as AuthUser;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
create_users_table :
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->nullable();
$table->string('email')->unique();
$table->string('password')->nullable();
$table->string('provider_id');
$table->rememberToken();
$table->timestamps();
});
}
Damn it what I am doing wrong?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire