<?php namespace Illuminate\Auth; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; /** * These methods are typically the same across all guards. */ trait GuardHelpers { /** * The currently authenticated user. * * @var \Illuminate\Contracts\Auth\Authenticatable */ protected $user; /** * The user provider implementation. * * @var \Illuminate\Contracts\Auth\UserProvider */ protected $provider; /** * Determine if the current user is authenticated. * * @return \Illuminate\Contracts\Auth\Authenticatable * * @throws \Illuminate\Auth\AuthenticationException */ public function authenticate() { if (! is_null($user = $this->user())) { return $user; } throw new AuthenticationException($this); } /** * Determine if the current user is authenticated. * * @return bool */ public function check() { return ! is_null($this->user()); } /** * Determine if the current user is a guest. * * @return bool */ public function guest() { return ! $this->check(); } /** * Get the ID for the currently authenticated user. * * @return int|null */ public function id() { if ($this->user()) { return $this->user()->getAuthIdentifier(); } } /** * Set the current user. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @return $this */ public function setUser(AuthenticatableContract $user) { $this->user = $user; return $this; } }