Example #1
0
 /**
  * Проверка CSRF-токена
  *
  * Если поле с токеном не задано, не выполнять проверку. Если не пройдет проверку, пробрасываем исключение.
  *
  * @return true
  * @throws \LogicException
  * @throws \RuntimeException с кодом 400, если токен неверный.
  */
 private function checkСsrfToken()
 {
     if (!$this->csrfField) {
         return true;
     }
     $method = Request::method();
     if (!in_array($method, ['GET', 'POST'])) {
         throw new \LogicException('Проверка CSRF токена возможна только при передаче формы методами GET или POST' . PHP_EOL . 'Текущий метод определен, как ' . $method);
     }
     $method = strtolower($method);
     $token = Request::$method($this->csrfField);
     if (!Request::validateCsrfToken($token)) {
         throw new \RuntimeException('Неверный CSRF токен', 400);
     }
     return true;
 }