Make the Authenticate middleware throw an AuthenticationException

This commit is contained in:
Joseph Silber 2016-05-22 14:50:39 -04:00
parent e7ff2bfb4d
commit 6dfc0229b2
1 changed files with 15 additions and 16 deletions

View File

@ -4,6 +4,7 @@
use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\AuthenticationException;
class Authenticate
{
@ -14,40 +15,38 @@ class Authenticate
* @param \Closure $next
* @param string ...$guards
* @return mixed
*
* @throws \Illuminate\Auth\AuthenticationException
*/
public function handle($request, Closure $next, ...$guards)
{
if ($this->check($guards)) {
return $next($request);
}
$this->authenticate($guards);
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
return $next($request);
}
/**
* Determine if the user is logged in to any of the given guards.
*
* @param array $guards
* @return bool
* @return void
*
* @throws \Illuminate\Auth\AuthenticationException
*/
protected function check(array $guards)
protected function authenticate(array $guards)
{
if (empty($guards)) {
return Auth::check();
if (count($guards) <= 1) {
Auth::guard(array_first($guards))->authenticate();
return Auth::shouldUse($guard);
}
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
Auth::shouldUse($guard);
return true;
return Auth::shouldUse($guard);
}
}
return false;
throw new AuthenticationException;
}
}