Элементы контента могут автоматически проверять, имеет ли пользователь разрешение на выполнение определенных действий путем изучения объекта ноды контейнера. Чтобы эта функциональность поддерживалась, как и следовало ожидать, ваши элементы контента должны использовать ноды контейнера. Для получения дополнительной информации обратитесь к документации по контейнерам нод и поддержке контейнеров в элементах контента.
Поддержка разрешений в элементах контента
Все, что вам нужно сделать для поддержки разрешений - это реализовать интерфейс разрешений в вашем классе модели элементов контента:
implements \IPS\Content\Permissions
Изменения в методах модели после реализации разрешений
Несколько методов в вашей модели элемента контента немного меняют поведение при реализации разрешений.
- canView() вернёт FALSE для элемента ноды, у которого пользователь не имеет разрешения на просмотр.
- loadAndCheckPerms() вызовет исключение OutOfRange, если загружен объект, к которому пользователь не имеет разрешения на просмотр.
- Во всех местах, где функции что-то делают, будет проверено разрешение. Например, canCreate() теперь вернёт FALSE, если пользователь не имеет разрешения на создание элементов контента в указанной ноде.
- getItemsWithPermission() будет возвращать только элементы, к которым текущий авторизованный пользователь имеет разрешение на просмотр (или другое разрешение, указанное параметрами).
Доступные дополнительные методы модели
boolean can( строка $permission [, \IPS\Member $member=NULL ] )
Возвращает логическое значение, указывающее, имеет ли пользователь разрешение на выполнение указанного действия.
- $permission (строка, обязательный) - Ключ проверяемого разрешения. Действие должно соответствовать значению из статического свойства $permissionMap класса контейнера.
- $member (\IPS\Member, необязательный) - Объект пользователя, разрешения которого должны быть проверены. Вы можете передать объект \IPS\Member\Group, чтобы проверить права группы. Если значение не передано, используется текущий авторизованный пользователь.
integer permId()
Возвращает идентификатор индекса разрешения для этой модели элемента.