samedi 23 septembre 2017

Laravel Auth "Call to a member function getReminderToken() on null"

No idea why I'm getting this error...

Call to a member function getRememberToken() on null (View: /home/vagrant/temptools/resources/views/layouts/main.blade.php) (View: /home/vagrant/temptools/resources/views/layouts/main.blade.php)

I have an Auth::check() on that blade page

I'm using http://ift.tt/1X3gHd0

Routes:

Route::get('login', 'AuthController@redirectToSteam')->name('login');
Route::get('login/handle', 'AuthController@handle')->name('login.handle');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

AuthController:

namespace App\Http\Controllers;

use Invisnik\LaravelSteamAuth\SteamAuth;
use App\User;
use Auth;

class AuthController extends Controller
{
    /**
     * The SteamAuth instance.
     *
     * @var SteamAuth
     */
    protected $steam;

    /**
     * The redirect URL.
     *
     * @var string
     */
    protected $redirectURL = '/';

    /**
     * AuthController constructor.
     * 
     * @param SteamAuth $steam
     */
    public function __construct(SteamAuth $steam)
    {
        $this->steam = $steam;
    }

    /**
     * Redirect the user to the authentication page
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function redirectToSteam()
    {
        return $this->steam->redirect();
    }

    /**
     * Get user info and log in
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function handle()
    {
        if ($this->steam->validate()) {
            $info = $this->steam->getUserInfo();

            if (!is_null($info)) {
                $user = $this->findOrNewUser($info);

                Auth::login($user, true);

                return redirect($this->redirectURL); // redirect to site
            }
        }
        return $this->redirectToSteam();
    }

    /**
     * Getting user by info or created if not exists
     *
     * @param $info
     * @return User
     */
    protected function findOrNewUser($info)
    {
        $user = User::where('id', $info->steamID64)->first();

        if (!is_null($user)) {
            return $user;
        }

        return User::create([
            'name' => $info->personaname,
            'avatar' => $info->avatarfull,
            'id' => $info->steamID64
        ]);
    }
}

app/User:

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'id', 'name', 'avatar',
    ];

    protected $hidden = [
        'remember_token',
    ];
}

create_users_table migration:

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->bigInteger('id')->unsigned();
            $table->string('name');
            $table->string('avatar');
            $table->rememberToken();
            $table->timestamps();

            $table->primary('id');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Have deleted the password recovery migration.

I also get the error if I hit the logout path:

Call to a member function getRememberToken() on null

========

Looking into errors, the error seems to be in laravel/framework/sec/Illuminate/Auth/EloquentUserProvider.php line 67

public function retrieveByToken($identifier, $token)
{
        $model = $this->createModel();
        $model = $model->where($model->getAuthIdentifierName(), $identifier)->first();
        $rememberToken = $model->getRememberToken();
        return $model && $rememberToken && hash_equals($rememberToken, $token) ? $model : null;
    }

Still no idea how to fix it though



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2ylCwuK
via IFTTT

Aucun commentaire:

Enregistrer un commentaire