⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Вызов стороннего скрипта из кода по кнопке
  • Вызов стороннего сервера из кода
  • Прием внешних запросов к тотум
  • Авторизация в remotes
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Авторизация в remotes

    пример с токеном

    Когда вы сделали remote, то любой, кто знает путь может к нему обратится и выполнить запрос или действие. Но достаточно часто это требуется ограничивать только доверенными скриптами.

    Первый и самый простой способ — это токен.

    При POST запросе вы одним из параметров передаете "token" = "TOKEN_VALUE" и проверяете его в коде remote:


    =:
    if(condition: $#post[token] = "TOKEN_VALUE"; then: $select) select: select(table: 'table'; field: 'summ'; where: 'key' = $#post[key])

    В этом случае если сторонний сервер в POST не передаст token или передаст неверный token, то он не получит ответа.

    пример с API пользователями

    Второй подход чуть сложнее, но имеет дополнительное преимущество.

    Дело в том, что при базовой настройке если у вас несколько разных ремоутов, то обращение к ним идет по разным url.

    Использование API-user позволяет отправлять запрос на один адрес с указанием к какому ремоуту он относится в теле запроса.

    1. Что бы это работало нам нужно создать пользователя с признаком API.

    2. Этот API-пользователь должен быть выбран в поле api_user в remotes.

    3. Обращение идет в POST оформленному как raw-data по одному адресу http(s)://domain.zone/Json/.

    В тело запроса передается JSON содержащий секцию авторизации и секцию remotes:

    {
    "auth": {
        "login": "json",
        "password": "1111"
      },
    "remotes": [
        {"name":"remote1", "data": {"var1": 1, "var2": [1,2,3]}},
        {"name":"remote2", "data": {"var1": 2, "var2": [3,2,5]}}
      ]
    }
    
    

    Таким образом может быть вызвано несколько ремоутов одновременно. Они будут выполнены в порядке в котором они переданы в запросе.

    Когда вызов ремоута идет через API-JSON интерфейс — то переменные, которые передаются в ремоут можно получить в переменной $#data!