API-module

Критически важные изменения

  • [Auth] Добавлена защита от брутфорса генерации новых кодов для входа:
    • Создайте новую таблицу:
      -- Дата последнего запроса кода аутентификации
      CREATE TABLE IF NOT EXISTS `auth_codes_lasts` (
          `id` BIGINT(22) NOT NULL AUTO_INCREMENT,
          `user_id` INT(11) NOT NULL,
          `created_at` DATETIME NOT NULL,
          PRIMARY KEY (`id`)
      ) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
      
    • Добавьте новую константу в конфиг api\app\Configs\SettingsAuth.php:
      /**
       * Количество генераций новых кодов в день
       *
       * @var int
       */
      const ATTEMPTS_PER_DAY = 50;
      
  • [Пользователи] В таблицу sessions необходимо добавить новые поля:
    ALTER TABLE `sessions`
        ADD `device_info`   JSON AFTER `user_id`,
        ADD `geoip`         JSON AFTER `device_info`,
        ADD `admin_entered` TINYINT(1) NOT NULL DEFAULT '0' AFTER `geoip`;
    

Необязательные изменения

  • [Response] В массиве ответа добавлен ключ success типа bool, рекомендуется использовать для проверки на наличие ошибок его вместо isset($result['errors']), т.к. в версии 2.0 ключ errors будет переименован в ключ error.

WEB-module

Критически важные изменения

  • [Gulp-плагин] Переход на плагин gulp-file-include:
    • старый комментарий: <!-- include "path/to/xxx.html" -->
    • новый комментарий: <!-- include('path/to/xxx.html') -->
    • путь до файла указывается от корня, корнем является каталог /src/html.
  • [Мой профиль] Новый раздел Мой профиль:
    • скачать архив 1.9.0_profile.zip и распаковать содержимое в каталог /src.
    • в файле /src/html/include/menu_topbar.html перед пунктом Выход добавить новый элемент:
    <li class="m-nav__item">
        <a href="/profile" data-navigo class="m-nav__link">
            <i class="m-nav__link-icon fas fa-fw fa-user-circle"></i>
            <span class="m-nav__link-title">
                <span class="m-nav__link-wrap">
                    <span class="m-nav__link-text">
                        Мой профиль
                    </span>
                </span>
            </span>
        </a>
    </li>
    
    • в файле /src/js/0-app/200-routes.js в блоке Системные маршруты добавить новый элемент:
    '/profile': function (params, query) {
        app.page = {
            name: 'profile',
            title: 'Мой профиль',
            onLoad: function () {
                lemurro.profile.init();
            },
            params: params,
            query: query,
        };
    },
    
  • [Пользователи] В методе lemurro.users.remove необходимо удалить неиспользуемый параметр name.
  • [Пользователи] В методе lemurro.users.showData необходимо удалить неиспользуемый параметр callback.
  • [Справочники] В методе lemurro.guide.remove необходимо удалить неиспользуемый параметр name.

Изменения средней важности

  • [JS] Вместо кода result.hasOwnProperty('errors') необходимо использовать код lemurro.hasErrors(result).
  • [JS-библиотки] Если вы использовали создание нового экземпляра через new LightAjax тогда вам необходимо знать об изменениях:
    • Вместо параметра settings.color теперь необязательный параметр settings.classColor, чтобы избежать проблем с Content Security Policy, можно не указывать, тогда будет использоваться класс по умолчанию.
    • Параметр callbackAlert помещён внутрь settings: settings.callbackAlert.
    • Исправлена ошибка когда жёстко менялись настройки в jQuery.ajaxSetup, теперь настройки по умолчанию работают только внутри LightAjax.
  • [Пользователи] В каталоге /src/js/users/ необходимо добавить js-файл с методом users.afterShowData:
    /**
     * Функция обратного вызова после отображения списка пользователей
     *
     * @param {Object} data
     *
     * @author  Дмитрий Щербаков <atomcms@ya.ru>
     *
     * @version 17.04.2020
     */
    users.afterShowData = function (data) {
    
    };
    
  • [Пользователи] В файле /src/html/pages/users/content.html:
    • добавить в блок ul#js-tabs__links новый элемент:
      <li class="nav-item">
          <a href="#tab-auth-keys" class="nav-link" data-toggle="tab" data-target="#tab-auth-keys">
              <i class="fas fa-key"></i> Ключи доступа
          </a>
      </li>
      
    • добавить в блок div#js-tabs__contents новый элемент:
      <div class="tab-pane" id="tab-auth-keys" role="tabpanel">
          <!-- include('pages/users/auth_keys.html') -->
      </div>
      
    • Скачать файлы auth_keys.html и tpl_auth_keys__items.html и поместить в каталог /src/html/pages/users.

Необязательные изменения

  • [Пользователи] В форме добавления\изменения пользователя можно визуально разбить блоки с основной системной информацией и правами доступа, изменения вы можете найти в файле form.html.