Laravel: Auth::user()->id intentando obtener una propiedad de un no objeto

Estoy recibiendo el siguiente error "intentando obtener una propiedad de un no objeto" cuando envío un formulario para añadir un usuario, el error está aparentemente en la primera línea: Auth::user()->id de lo siguiente:

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

¿Alguna idea? He buscado un rato y todo lo que veo dice que esto debería funcionar bien. Mi usuario está conectado usando el paquete de autenticación Sentry 2.

Solución

Si estás usando Sentry comprueba el usuario conectado con Sentry::getUser()->id. El error que obtienes es que Auth::user() devuelve NULL y trata de obtener el id de NULL de ahí el error tratando de obtener una propiedad de un no objeto.

Comentarios (1)

Haz un Auth::check() antes para asegurarte de que estás bien conectado:

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

id está protegido, simplemente añade un método público en tu /models/User.php.

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

para que puedas llamarlo

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

recuerde siempre probar si el usuario está registrado...

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