8 (800) 302-62-68
+7 (499) 348-29-58
sale@rbs-crm.ru

Документация разработчика

РосБизнесСофт CRM > База знаний > Разработчикам > Настройка прав доступа

Настройка прав доступа

Только пользователь с правами «Администратор» имеет право настраивать права доступа другим пользователям (в т.ч. ограничивать права другим «Администраторам»).

Настройка прав осуществляется в меню «Настройки»«Пользователи и права».

Права доступа разделяются на несколько разделов:

Основные

  • Имеет доступ в систему — Включает/Отключает доступ в систему. С выключенным флагом, пользователь не сможет зайти в Систему
  • Имеет доступ по API — Включает/Отключает доступ к API
  • Восстановление пароля по E-mail — Включает/Отключает возможность восстановление пароля с помощью электронной почты. Если флаг отключен, то пользователь не сможет восстановить пароль
  • Администратор — Включает/Отключает режим «Администратора» у пользователя. Администратору доступны все разделы Системы, кроме интерфейсов и флагов (их можно настраивать отдельно вручную)
Уровень доступа

Разделяется на два типа:

  • Ручная настройка доступа — Для каждого пользователя задаются индивидуальные настройки доступа к объектам, виджетам, отчетам.
  • Маска доступа — Задаются групповые настройки доступа для пользователей к объектам, виджетам, отчетам (например, для «менеджеров» или «инженеров»). Настройки «Масок» происходит в разделе «Настройки» «Маски доступа».
Интерфейс

От выбранного «Интерфейса» зависит, какие разделы будут доступны пользователю. Настройка интерфейсов происходит в меню «Настройки» — «Настройка меню».

Важно! Если снять галочки со всех «Интерфейсов», то элемент меню будет показываться у всех пользователей. Это сделано для совместимости с модулем экспорта/импорта конфигураций Системы.

Если необходимы скрыть элемент меню от всех пользователей , то необходимо его удалить или добавить новый интерфейс (например, назвать его «Для тестирования») и поставить галочку только на против этого «Интерфейса».

Если необходимо дать пользователю без прав администратора доступ к определенной закрытой форме/странице (служебной страницы, например History-панели), то необходимо зайти в: «Настройки» -> «Настройки меню» и добавить новый «Элемент» меню. Далее прописать в поле «Ссылка» путь к необходимой форме и выбрать необходимые маски доступа.

Состоит в группах

Можно выбрать несколько групп, в которых состоит Пользователь. Если пользователь не «Администратор», то доступ будет разрешен от группы ответственных, а не только от одного пользователя.

Логин и пароль

После добавления «Пользователя» его логин в Системе менять нельзя. Если нужно поменять логин, то сначала снимите галочку «Имеет доступ в систему», сохраните «Пользователя», и потом поставьте галочку снова. Пользователь создается как «новый» и тогда можно будет установить ему новый логин и пароль.

Доступ к объектам

В данном разделе настраивается доступ к «Объектам системы», их полям и табличным частям.

Данный уровень доступа может быть как в «Ручной настройке», так и в «Маске доступа». Все методы настройки одинаковые.

«Доступ к объектам» имеет удобный интерактивный поиск по названию (RU, EN). Доступ можно настроить только к «Справочникам» и «Документам».

Столбик «Доступ к полям» информативная и говорит о том, есть ли явно установленные ограничения на «Поля» объекта.

При щелчке левой клавишей мыши открывается модальное окно редактирования.

Доступы к объекту:

  • Просмотр — [ACCESS_VIEW] Разрешение на просмотр объекта
  • Создание — [ACCESS_CREATE | ACCESS_ADD] Разрешение на создание (добавление) нового объекта
  • Изменение — [ACCESS_EDIT] Разрешения не изменение объекта
  • Удаление в корзину — [ACCESS_DELETE] Разрешение на удаление в корзину объекта
  • Удаление из корзины — [ACCESS_WIPE] Разрешение на полное удаление объекта
  • Экспорт — [ACCESS_EXPORT] Разрешение на Экспорт и печать объекта. Так же этот флаг может использоваться в табличных частях.

Такие флаги можно применять в actionButtons и moreButtons.

Пример: Если доступ на Экспорт [ACCESS_EXPORT] закрыт, то кнопки будут неактивны у пользователя

<?php 
    $this->addActionPanelButtons([
    "PRINT" => [
    "link"   => "javascript:prn()",
    "name"   => "Печать",
    "params" => "target='_blank'",
    "icon"   => ['before' => 'fa fa-print'],
    "access" => ACCESS_EXPORT,
    "items"  => [
    [
    "link"   => "javascript:prn(1)",
    "name"   => "Печать с подписями",
    "params" => "target='_blank'",
    "icon"   => ['before' => 'fa fa-print'],
    ],
    [
    "link"   => "/companies/" . $this->structure->owner->id . "/orders/" . $this->structure->id . "/pko/",
    "name"   => "ПКО",
    "params" => "target='_blank'",
    "icon"   => ['before' => 'fa fa-print'],
    ],
    ]
    ],
]);

Доступ к объекту осуществляется следующими режимами:

  • Запрещено — [Access::ACCESS_DENIED] Полностью запрещен просмотр
  • Если ответственный — [Access::ACCESS_RESPONSIBLE] Разрешен только, где ответственный только данный пользователь
  • Для группы — [Access::ACCESS_GRANTED] Разрешен только, где ответственный данный пользователь и группа пользователей, если указаны в основных настройках
  • Разрешено — [Access::ACCESS_GRANTED_GROUP] Разрешен доступ

Все режимы описаны в константах класса Access.

Доступ к полям и табличным частям объекта

При нажатии на галочку «Доступ к полям» открывается список полей и табличных частей. При снятии галочки все права на поля очищаются.

Поля со звездочкой, являются системными и закрыть доступ на них нельзя.

Доступ к полям осуществляется следующими режимами:

  • Полный — [Access::GROUPED_ACCESS_FULL] Полный доступ к полю. Режим по умолчанию
  • Просмотр — [Access::GROUPED_ACCESS_READ_ONLY] Поле доступно только на чтение.
  • Нет доступа — [Access::GROUPED_ACCESS_DENIED] Доступ к полю запрещен. При работе с таким полем по ORM, изменения игнорируются

Внизу есть кнопка «Сбросить по умолчанию» — сбрасывает все настройки по выбранному объекту.

Обращаем внимание, что нужно очень аккуратно настраивать «Доступы к объектам», т.к. можно заблокировать функциональность программы в целом у пользователя. Мы рекомендуем после настройки каждого из раздела заходить в Систему под пользователем и проверять, как работает этот раздел у него.

Доступ к виджетам

Настраивается доступ пользователей к виджетам на «Рабочем столе».

Важно! Изменение доступа к виджетам пользователя никак не отражается на количестве активных виджетов на его «Рабочем столе». Нужно пользователю зайти на своем «Рабочем столе» в меню «Виджетов» и указать галочкой новый виджет.


Доступ к отчетам

Настраивается доступ пользователей к отчетам (раздел «Аналитика»).

Данный уровень доступа может быть как в «Ручной настройке», так и в «Маске доступа». Все методы настройки одинаковые.

Доступ к флагам

Привязывает пользователю флаги. Данный уровень доступа может устанавливаться всем пользователям, в том числе и «Администраторам».

Наличие «Флагов» позволяют разработчику гибко управлять бизнес-логикой в «PHP-сценарии». Например, если у пользователя стоит флаг «ADD_PAYMENT», то у него доступна кнопка в счете «Внесение оплаты».

При нажатии на кнопку «Добавить» вставляется запись с желтой подсветкой. Вводится имя или описание и сам код флага.

Код флага должен быть в верхнем регистре латинскими буквами и должен быть уникальным.

При добавлении нового «Флага» у всех пользователей он появится в списке неактивным.

Редактировать «Флаги» нельзя, можно только добавлять и удалять. При установки галочки напротив «Флага» его значение автоматически сохраняется в настройках.

Пример использования в PHP-сценарии:

//php проверить доступ к флагам во всех Action можно так
if($this->User->showFlag("NEW_TEST_FLAGS")){
    echo "ok";	
}

Пример использования в шаблоне:

// на поле установить флаг доступа можно так
[[field | name: price_type | flagAccess: NEW_TEST_FLAGS]]

//на ROW флаг установить можно следующим способом
[[ROW | flagAccess: NEW_TEST_FLAGS2 | rowOff:1]]
  content only show in aceess flag
[[ROW_END]]

// на BLOCK флаг установить можно следующим способом. Обязательно в конце должен быть написан: flagAccess NEW_TEST_FLAGS
{TTT show flagAccess NEW_TEST_FLAGS}
  Test ok
{/TTT}

Пример: ограничить доступ к странице, если у текущего пользователя стоит флаг «HIDE»

    if($this->User->showFlag("HIDE")) {
        $this->Http->error(HTTP_ERROR_ACCESS_DENIED);
    }

Результат:

Мы рекомендуем проводить настройку прав доступа сначала на тестовых пользователях. И после полной проверки прав применять их уже другим пользователям.

Дополнительная информация доступна по ссылке.