Example #1
0
 /**
  * Готовим данные для логирования.
  *
  * Кроме сообщения, переданного клиентским кодом, добавляем полезную инфу: дата/время, часовой пояс, IP юзера,
  * URL запроса.
  *
  * @param array $data исходные данные
  * @return void
  */
 private function prepareLogData($data)
 {
     $ts = $this->conf['php_timezone'] ? new \DateTime(null, new \DateTimeZone($this->conf['php_timezone'])) : new \DateTime();
     $this->logIt = ['type' => $data['type'], 'ts' => $ts, 'timezone' => $ts->format('\\G\\M\\T P'), 'userIP' => Request::userIP(), 'request' => Request::absoluteURL(), 'source' => $data['source'], 'message' => str_replace(chr(9), '', $data['message'])];
 }
Example #2
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;
 }