Laravel: Auth::user()->id sa pokúša získať vlastnosť neobjektu

Pri odosielaní formulára na pridanie používateľa dostávam nasledujúcu chybu "trying to get a property of a non-object", chyba je zrejme na prvom riadku: Auth::user()->id of the following:

$id = Auth::user()->id;
$currentuser = User::find($id);
$usergroup = $currentuser->user_group;
$group = Sentry::getGroupProvider()->findById($usergroup);

$generatedPassword = $this->_generatePassword(8,8);
$user = Sentry::register(array('email' => $input['email'], 'password' => $generatedPassword, 'user_group' => $usergroup));

$user->addGroup($group);

Nejaké nápady? Chvíľu som hľadal a všetko, čo som videl, hovorí, že by to malo fungovať dobre. Môj používateľ je prihlásený pomocou autentifikačného balíka Sentry 2.

Riešenie

Ak používate Sentry, skontrolujte prihláseného používateľa pomocou Sentry::getUser()->id. Chyba, ktorú dostanete, je, že Auth::user() vracia NULL a pokúša sa získať id z NULL, preto je chyba pokus o získanie vlastnosti z neobjektu.

Komentáre (1)

Predtým vykonajte Auth::check(), aby ste sa uistili, že ste dobre prihlásení:

if (Auth::check())
{
    // The user is logged in...
}
Komentáre (3)

id je protected, stačí pridať verejnú metódu do vášho /models/User.php

public function getId()
{
  return $this->id;
}

aby ste ju mohli zavolať

$id = Auth::user()->getId();

nezabudnite vždy otestovať, či je používateľ prihlásený...

if (Auth::check())
{
     $id = Auth::user()->getId();
}
Komentáre (2)