Модуль решает задачу предоставления пользователям организации (группе пользователей) прав на чтение и запись во все ресурсы, вложенные в определенную папку.
Модуль создает поле: field_access_rw_organization и назначает его папкам каталога.
В созданное поле можно вписать отдельные организации, при этом:
Содержание
field_access_rw_organization[править]
Все пользователи, ассоциированные с любой из указанных в поле организаций получают доступ на просмотр папки и запись самой папки и всех вложенных в нее ресурсов, если только где-то ниже в таком же поле (field_access_rw_organization) не переопределен доступ (не назначены другие организации).
Т.о. права доступа наследуются по каталогу вниз, но могут быть переопределены на более низком уровне.
Особенность: ассоциация учитывается только когда ассоциация пользователя с организацией сохранена в базе данных (в результате логина с соответствующей опцией сохранять организации при логине с ее подсети), но когда организация динамически временно ассоциирована с пользователем по IP-адресу, пользователь прав динамически-присвоенной организации не получит чтобы избежать ситуации, когда непрошедший аутентификацию пользователь может удалять чужие ресурсы просто получив доступ к ПК в авторизованной сети. Не рекомендуется полагаться на эту особенность и для организаций, у которых есть права на запись не следует иметь IP-адреса, чтобы пользователи не могли автоматически ассоциироваться с ней имея только доступ в подсеть организации (отдела).
Как проверяется доступ к ресурсу[править]
Когда пользователь открывает ресурс, система защиты ищет поле field_access_rw_organization у открываемой ноды и если его находит, сравнивает с организациями текущего пользователя. Если у текущей ноды поле не заполнено, происходит подъем по каталогу вверх в поисках нод, у которых поле field_access_rw_organization не пустое. Если находится при проходе по каталогу вверх непустое поле и совпадает хоть одна организация в поле и хоть одна ассоциированная с пользователем организация - доступ разрешается, если нет, ветка откидывается.
Если у ресурса несколько родительских папок, то проверка идет вверх по каждому родителю в поисках хоть одной ветви, предоставляющей доступ.
Взаимодействие с другими модулями доступа[править]
Поле field_access_rw_organization работает независимо от других разрешающих доступ модулей.
Предоставление доступа на уровне отдельных ресурсов[править]
По умолчанию включение модуля создает поле field_access_rw_organization только у папок и доступ т.о. управляется только на уровне папок, но вы можете в ручном режиме добавить поле field_access_rw_organization для любых других типов нод и тогда появится возможность назначать права доступа отдельным организациям на уровне отдельных ресурсов. При этом схема наследования работает также: если одно из полей заполнено на уровне ресурса, оно переопределяет права родительской папки.
Добавить поля можно на сайте ELiS по адресу admin/structure/types.
Установка[править]
RPM-пакет: drupal7-elis-mod-access.
Для установки выполните на сервере:
# dnf install drupal7-elis-mod-access
После чего включите модуль ELiS Access Organization в веб-интерфейсе.
Включение модуля автоматически создаст поля у ноды типа subj. Все, можно приступать к работе.