66
68
* Check CSRF token is valid.
67
* @throws TokenExpiredException
69
public function check()
71
$session = $this->app->session;
72
/* @var \Xibo\Helper\Session $session */
74
if (!$session->get($this->key)) {
75
$session->set($this->key, sha1(serialize($_SERVER) . rand(0, 0xffffffff)));
78
$token = $session->get($this->key);
70
public function check() {
71
// Check sessions are enabled.
72
if (session_id() === '') {
73
throw new \Exception('Sessions are required to use the CSRF Guard middleware.');
76
if (! isset($_SESSION[$this->key])) {
77
$_SESSION[$this->key] = sha1(serialize($_SERVER) . rand(0, 0xffffffff));
80
$token = $_SESSION[$this->key];
80
82
// Validate the CSRF token.
81
83
if (in_array($this->app->request()->getMethod(), array('POST', 'PUT', 'DELETE'))) {
82
// Validate the token unless we are on an excluded route
83
$route = $this->app->router()->getCurrentRoute()->getPattern();
85
if ($this->app->excludedCsrfRoutes == null || ($route != null && !in_array($route, $this->app->excludedCsrfRoutes))) {
87
$userToken = $this->app->request()->headers('X-XSRF-TOKEN');
88
if ($userToken == '') {
89
$userToken = $this->app->request()->params($this->key);
92
if ($token !== $userToken) {
93
throw new TokenExpiredException('Sorry the form has expired. Please refresh.');
84
$userToken = $this->app->request()->headers('X-XSRF-TOKEN');
85
if ($userToken == '') {
86
$userToken = $this->app->request()->params($this->key);
89
if ($token !== $userToken) {
90
throw new TokenExpiredException('Sorry the form has expired. Please refresh.');