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