Files
spa-api/app/Http/Middleware/VerifyCsrfToken.php

51 lines
1.0 KiB
PHP
Raw Normal View History

2014-10-06 15:25:53 -05:00
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Session\TokenMismatchException;
class VerifyCsrfToken implements Middleware {
2014-10-06 15:25:53 -05:00
/**
* Handle an incoming request.
*
2014-10-06 15:46:34 -05:00
* @param \Illuminate\Http\Request $request
2014-10-06 15:25:53 -05:00
* @param \Closure $next
2014-10-06 15:46:34 -05:00
* @return mixed
2014-10-20 16:45:39 -05:00
*
2014-10-10 22:56:00 +02:00
* @throws TokenMismatchException
2014-10-06 15:25:53 -05:00
*/
public function handle($request, Closure $next)
{
2014-11-06 13:11:17 -06:00
if ($this->isReading($request) || $this->tokensMatch($request))
2014-10-06 15:25:53 -05:00
{
2014-10-09 21:50:52 -05:00
return $next($request);
2014-10-06 15:25:53 -05:00
}
2014-10-09 21:50:52 -05:00
throw new TokenMismatchException;
}
/**
* Determine if the session and input CSRF tokens match.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function tokensMatch($request)
{
2014-11-09 16:31:08 -06:00
return $request->session()->token() === $request->input('_token');
2014-10-06 15:25:53 -05:00
}
/**
* Determine if the HTTP request uses a read verb.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
2014-11-06 13:11:17 -06:00
protected function isReading($request)
{
2014-11-06 13:11:17 -06:00
return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
}
2014-10-06 15:25:53 -05:00
}