Laravel: Auth::user()->id tentando obter uma propriedade de um não-objecto

I'estou recebendo o seguinte erro "tentando obter uma propriedade de um não-objeto" quando eu submeto um formulário para adicionar um usuário, o erro está aparentemente na primeira linha: Auth::user()->id do seguinte:

$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);

Alguma ideia? I'procurei por um tempo e tudo o que vejo diz que isto deve funcionar bem. Meu usuário está logado usando o pacote de autenticação do Sentry 2.

Solução

Se você estiver utilizando Sentry verifique o usuário logado com Sentry::getUser()->id. O erro que você recebe é que o Auth::user() retorna NULL e tenta obter o id do NULL, daí o erro trying to get a property from a non-object.

Comentários (1)

Faça um Auth::check() antes para ter certeza de que você está bem logado :

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

id é protegido, basta adicionar um método público no seu /modelos/User.php.

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

então você pode chamar isso de

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

lembre-se sempre de testar se o utilizador está registado...

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