Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Прокси-контроллер служит прослойкой между внешней системой и виджетом отчета HCCP. Он проверяет параметры, переданные из виджета, и передает их в бэкенд HCCP, добавляя к ним заголовок аутентификации и другие данные, необходимые для работы стыковки.

 

Для логина (POST /login) необходимо реализовать метод, который будет передавать учетные данные в API HCCP. Пример реализации на Ruby:

Code Block
languageruby
    def login
      request_params = {
        url: URI.join(config.url, '/api/login').to_s,
        method: :post,
        payload: {
          params: {
            login: config.login,
            password: config.password
          }
        }.to_json
      }

      render json: RestClient::Request.execute(request_params)
    end

В результате метод должен вернуть фронтэнду полученный от API HCCP json.

Для остальных запросов GET запросов  запросов запросов необходимо просто проксировать запросы. Для POST запросов необходимо добавлять hccp_auth_token. Пример прокси контроллера:

 

...

ИмяЗначение (пример)Обязательный
baseURL

URL по которому виджет выполняет запросы в API, может быть как полным адресом ('http://localhost:3001/'), так и относительным адреса текущего приложения ('/hccp/').

В первом случае виджет будет выполнять запросы к http://localohost:3001/login (в случае логина).

Во втором случае – http://localhost:3003/hccp/login, где http://localhost:3003/ – URL системы, в которую встраивается виджет.

Нет
locale 
Язык, с которым будет инициализирован виджет ('ru')Нет
customerId
id абонента, которые должен отображаться в виджетеДа
containerId
id элемента, в котором отобразится виджет
('customer-widget-id')
Да

...

Code Block
haml
haml
!!!
%html
  %head
    %script{type: "text/javascript", src: "http://localhost:3000/customerWidget.js"}
    %link{rel: 'stylesheet', type: "text/css", href: "http://localhost:3000/customerWidget.css"}
  %body
    %div
      %h1 Welcome
      %p
      #widget#customer-widget-id{style: 'width: 1000px; margin: 0 auto; font-size: 13px; border: 5px dashed lightgrey;'}

:javascript
  document.addEventListener('DOMContentLoaded', () => {
    HCCPCustomerWidget.render({
      baseURL:     '/hccp/',
      locale:      'ru',
      customerId:  '50162901',
      containerId: 'customer-widget-id',
    });
  });