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

Права доступа в системе можно настраивать несколькими способами:

  • Настройка прав через модуль «Права доступа» в «Настройках»
  • С помощью программного кода (более гибко)

Настройка прав в «Настройках»

  • Доступ к «Сценариям»
  • Доступ к «Данным» (Объектам системы, полям)
  •  

    Доступ к «Данным»

    В системе права доступа можно настраивать, как к группе пользователей — «Маски доступа», так и к конкретному «Пользователю».

    Маски доступа наследуются от более высокого уровня к более низкому. При этом «маска доступа» «Администратор» имеет самые максимальные права в системе.

    Серым цветом выделены строки от «Родителя», в данном случае от «Администратора».

    Что такое П-Ч-З-Д-У-С?
    П — просмотр (просмотр списков объекта, «форма списка»)
    Ч — чтение (просмотр самого объекта, «форма редактирования»)
    З — запись (изменение объекта)
    Д — добавление (добавление объекта)
    У — удаление (пометка на удаление)
    С — стирание (полное стирание объекта из БД, wipe)

    Доступ к «Сценариям»

    Чтобы настроить доступ пользователя к конкретному сценарию, необходимо добавить новую запись в табличную часть «Доступ к сценариям».

    В поле «Сценарий» необходимо указать название сценария с заглавной буквы, в поле действие возможны варианты «edit» — форма редактирования, «enlist» — форма списка.

    В поле Тип необходимо указать разрешение на доступ к сценарию пользователя.

    Внимание! После установки прав доступа необходимо очистить кэш в браузере.

    Права доступа на поля можно задавать, добавляя позиции в табличную часть «Доступ к данным».

    В поле «Структура» необходимо выбрать структуру, В «Поле» — поле, В «Условие» вы можете написать условие, по которому данная маска доступа будет действительна.
    Галочками можно запретить или разрешить различные операции.

    Доступ ко всем сценариям устанавливается символом «~»

    Настройка прав доступа через «Сценарий (PHP-код)»

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

    Открываем форму «Списка» счетов. Находим функцию paginate() и добавляем в нее условие

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    protected function paginate()
      {
        if($this->User->getEmployee()->mask_id->id == "34") // обращаемся к классу USER, берем из него ID маски сотрудника. Допустим, ID маски "Менеджер" = "34"
          {
             $this->structure->filter("responsible=".$this->User->getEmployee()->id); // накладываем фильтр на список "Счетов"
       }
     
     parent::paginate();
    }

    Чтобы посмотреть ID «Маски доступа» необходимо зайти в нее в настройках и в URL будет стоять номер ее (ID):

    Чтобы получить непосредственно ID пользователя, то используйте следующее:

    1
    
    $this->User->getEmployee()->id

    С помощью данных конструкций можно гибко управлять доступом пользователей к любым данным и блокам системы.

    Последние правки: 08.08.2016 15:24:08