API-module
Критически важные изменения
- Пользователи: добавлена возможность блокировать пользователей, необходимо добавить в таблицу
users
новое полеlocked
:
А также создать новый файлALTER TABLE `users` ADD `locked` TINYINT(1) NOT NULL DEFAULT '0' AFTER `auth_id`;
api/app/RunAfter/Users/LockUnlock.php
со следующим содежримым:<?php /** * После блокировки \ разблокировки пользователя * * @version 03.06.2019 * @author Дмитрий Щербаков <atomcms@ya.ru> */ namespace Lemurro\Api\App\RunAfter\Users; use Lemurro\Api\Core\Abstracts\Action; use Lemurro\Api\Core\Helpers\Response; /** * Class LockUnlock * * @package Lemurro\Api\App\RunAfter\Users */ class LockUnlock extends Action { /** * Выполним действие * * @param array $data Массив данных для ответа * * @return array * * @version 03.06.2019 * @author Дмитрий Щербаков <atomcms@ya.ru> */ public function run($data) { return Response::data($data); } }
- Пользователи: добавлен блок "Наборы прав доступа", необходимо добавить новую таблицу
access_sets
:-- Наборы прав доступа CREATE TABLE IF NOT EXISTS `access_sets` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `roles` TEXT, `created_at` DATETIME, `updated_at` DATETIME, `deleted_at` DATETIME, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
- File: добавлена возможность вернуть все загруженные файлы обратно во временное хранилище если в вашем коде случилась ошибка и вы пойдете заново пытаться сохранить файлы из временного хранилища в постоянное, подробнее читайте здесь
Изменения средней важности
- Компоненты
Symfony
обновлены до версии4.3
- До новых версий обновлены библиотеки:
- monolog/monolog: v1.24;
- nesbot/carbon: v2.18;
- pimple/pimple: v3.2;
- Новый хелпер LogException
- Все не пойманные Exception отлавливаются в ядре и логируются в
main.log
- File: при загрузке файла во временное хранилище без аутентификации в качестве суффикса используется
uniqid('', true)
WEB-module
Критически важные изменения
-
Верхнее меню "только для админов" не скрывалось для "простых пользователей", необходимо в файле
/src/html/include/menu_topbar.html
в элементеli
, там где выпадающее меню с разделами "Справочники" и "Пользователи" добавить классыd-none js-role js-role__admin
:Было Стало <li class="m-nav__item m-topbar__user-profile...>
<a href="#" class="m-nav__link m-dropdown__toggle">
<span class="m-topbar__username">
<span class="text-muted">
<i class="fas fa-cogs"></i>
<li class="
d-none js-role js-role__admin
m-nav__item m-topbar__user-profile...>
<a href="#" class="m-nav__link m-dropdown__toggle">
<span class="m-topbar__username">
<span class="text-muted">
<i class="fas fa-cogs"></i>
-
Пользователи: добавлена возможность блокировать пользователей, в файл
/src/html/pages/users/tpl_item.html
вносим следующие изменения:-
Кнопку
Войти
необходимо обернуть в тег{{#unless locked}}...{{/unless}}
:{{#unless locked}} <li class="m-nav__item js-login-by-user"> <a href="javascript:lemurro.users.loginByUser('{{id}}');" class="btn m-btn--icon"> <span> <i class="fas fa-fw fa-sign-in-alt"></i> <span>Войти</span> </span> </a> </li> {{/unless}}
-
После кнопки
Войти
добавить блок кнопокЗаблокировать \ Разблокировать
:<!-- кнопка Войти --> <li class="m-nav__item"> {{#if locked}} <a href="javascript:lemurro.users.unlock('{{id}}');" class="btn m-btn--icon"> <span> <i class="fas fa-fw fa-unlock"></i> <span>Разблокировать</span> </span> </a> {{else}} <a href="javascript:lemurro.users.lock('{{id}}');" class="btn m-btn--icon"> <span> <i class="fas fa-fw fa-lock"></i> <span>Заблокировать</span> </span> </a> {{/if}} </li> <!-- кнопка Удалить -->
-
А также заглушку кнопки для пользователя с id=1:
<!-- кнопка Войти --> <li class="m-nav__item"> <span class="btn m-btn--icon disabled"> <span> <i class="fas fa-fw fa-lock"></i> <span>Заблокировать</span> </span> </span> </li> <!-- кнопка Удалить -->
-
В столбце с
auth_id
пользователя:Было Стало <td class="align-middle text-nowrap">
<span class="auth_id">{{auth_id}}</span>
</td>
<td class="align-middle text-nowrap">
<span class="auth_id">{{auth_id}}</span>
{{#if locked}}
<i class="fas fa-fw fa-lock text-warning" title="Пользователь заблокирован"></i>
{{/if}}
</td>
-
-
Пользователи: добавлен блок "Наборы прав доступа"
- Скопируйте новые файлы:
-
/src/html/pages/users/access_sets.html
; -
/src/html/pages/users/tpl_access_sets__item.html
; -
/src/html/pages/users/tpl_access_sets__roles.html
;
-
- В файле
/src/html/pages/users/form.html
есть блок выглядящий примерно так:
Приводим его вот к такому виду:<div class="form-group m-form__group"> <label>Права доступа</label> <div class="m-checkbox-inline"> <label class="m-checkbox"> <input type="checkbox" class="js-role js-user-id-1" data-role="admin"> Администратор <span></span> </label> </div> <table id="js-user__roles" class="table table-hover"> <tr> <td class="w1 text-nowrap"> <strong>Справочники</strong> </td> <td> <div class="m-checkbox-inline"> <label class="m-checkbox"> <input type="checkbox" class="js-role" data-role="guide" data-access="read"> Просмотр <span></span> </label> <label class="m-checkbox"> <input type="checkbox" class="js-role" data-role="guide" data-access="create-update"> Добавление и изменение <span></span> </label> <label class="m-checkbox"> <input type="checkbox" class="js-role" data-role="guide" data-access="delete"> Удаление <span></span> </label> </div> </td> </tr> <!-- Сюда будет загружен список всех ролей из настроек --> </table> </div>
<div class="row"> <div class="col-8"> <label>Права доступа</label> <div class="m-checkbox-inline m--margin-left-10 m--margin-top-10"> <label class="m-checkbox"> <input type="checkbox" class="js-role js-user-id-1" data-role="admin"> Администратор <span></span> </label> </div> </div> <div class="col-4"> <div id="js-user__access-sets" class="hidden"> <label>Применить набор прав доступа</label> <select class="form-control m-input" onchange="lemurro.accessSets.apply()"> <!-- Сюда будет загружен список наборов прав доступа --> </select> </div> </div> </div> <div class="form-group m-form__group"> <table id="js-user__roles" class="table table-hover"> <!-- Сюда будет загружен список всех ролей из настроек --> </table> </div>
- В файле
/src/html/pages/users.html
добавьте новую вкладку:<!-- <li><a href="#tab-form">...</li> --> <li class="nav-item"> <a href="#tab-access-sets" class="nav-link" data-toggle="tab" data-target="#tab-access-sets"> <i class="fas fa-box-open"></i> Наборы прав доступа </a> </li> <!-- <div id="tab-form">...</div> --> <div class="tab-pane" id="tab-access-sets" role="tabpanel"> <!-- include "users/access_sets.html" --> </div>
- В файле
/src/js/0-app/100-config.js
в объектapp.config.userRoles.list
добавьте новый элемент:{ name : 'guide', title : 'Справочники', access: [ 'read', 'create-update', 'delete' ] }
- Скопируйте новые файлы:
Изменения средней важности
- До новых версий обновлены библиотеки:
- @fortawesome/fontawesome-free: v5.8.2;