Для правильной работы приложения SynergyApp и авторизации в подключенных к нему приложений конструктора необходимо:

  1. В приложении SynergyApp открыть скрипт synergy_app_page.js

В скрипте есть массив приложений const synergyApps = [];

Необходимо добавить в данный массив список приложений, например:

_images/1.png

Рис. Добавление приложения в список

  1. Иконку приложения необходимо брать с fonts.google.com
_images/2.png

Рис. Добавление иконки

  1. Настройка приложения для подключения в качестве модуля к SynergyApp

Необходимо будет создать пустую страницу “заглушку”, сделать ее стартовой и страницей авторизации:

_images/3.png

Рис. Добавление заглушки

Код страницы указать, например, start_page

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

Внимание! Если есть кейсы на успешную авторизацию, их необходимо убрать.

const getUrlParameter = sParam => {
 let sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName;
 for (let i = 0; i < sURLVariables.length; i++) {
  sParameterName = sURLVariables[i].split('=');
   if (sParameterName[0] === sParam)
   return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
 }
   }

  pageHandler('start_page', () => {
 const app = getUrlParameter('app');
 const locale = getUrlParameter('locale');

 if(locale) {
  localStorage.locale = locale;
  fire({type: 'change_locale', locale});
}

 if(app) {
   Cons.setAppStore({appInIframe: true});
   const basicParams = btoa(encodeURIComponent(decodeURIComponent(unescape(atob(app)))));
  const decodeStr = decodeURIComponent(atob(basicParams));
  const separator = decodeStr.slice(0,8);
  const authParams = decodeStr.split(separator);
  Cons.login({
 login: authParams[1].split('').reverse().join(''),
 password: authParams[2].split('').reverse().join('')
   });
 } else {
   fire({type: 'goto_page', pageCode: 'authPage'}, 'root-panel');
 }

 if (!Cons.getAppStore().start_page_auth_listener) {
   addListener('auth_success', 'root-panel', authed => {
 const {login, password} = authed.creds;

 Cons.creds.login = login;
 Cons.creds.password = password;
 AS.apiAuth.setCredentials(login, password);
 AS.OPTIONS.login = login;
 AS.OPTIONS.password = password;
 AS.OPTIONS.currentUser = authed.data.person;
 fire({type: 'goto_page', pageCode: 'listWorksPage'}, 'root-panel');
   });

   Cons.setAppStore({start_page_auth_listener: true});
 }
   });
  1. Прописать в свойствах приложений SynergyApp и связанных с ним приложениях логин и пароль служебного пользователя с правами администратора.
  2. Остается задеплоить своё приложение и приложение SynergyApp.

p.s. дизайн страницы авторизации и верхней панели приложения SynergyApp остается за вами