Разрешения страницы⚓︎
Разрешения пользователя/группы для страниц:
Параметр | Значение | Описание |
---|---|---|
Настройка | admin.configuration | Предоставляет пользователю доступ к области Настройка. |
Настройка страниц | admin.configuration.pages | Предоставляет пользователю доступ к области Настройка страниц внутри раздела Страницы. |
Страницы | admin.pages | Предоставляет пользователю доступ к области Страницы. |
Создание | admin.pages.create | Предоставляет пользователю доступ к Созданию страниц. |
Просмотр | admin.pages.read | Предоставляет пользователю доступ к Просмотру страниц. |
Обновление | admin.pages.update | Предоставляет пользователю доступ к Обновлению страниц. |
Удаление | admin.pages.delete | Предоставляет пользователю доступ к Удаление страниц. |
Список | admin.pages.list | Предоставляет пользователю доступ к области Страницы. |
Все действия в Grav проверяются только на соответствие одному типу разрешения. Если вы запрещаете пользователю создавать списки или читать страницы в админке, но при этом разрешаете ему создавать, обновлять и удалять страницы, он сможет выполнять эти действия. Это означает, что даже если пользователи не видят Страницы
в админке, они могут посетить страницу редактирования напрямую и выполнить эти действия оттуда.
Начиная с Grav 1.7, вы можете и должны ограничивать CRUD доступ для отдельных страниц и их дочерних элементов непосредственно с самих страниц.
Возможные значения разрешений:
Параметр | Значение | Описание |
---|---|---|
Разрешено | true | Разрешает действие, если не установлен Запрет. |
Запрещено | false | Запрещает действие. При наличии разрешения и запрета на одно и то же действие в приоритете Запрет. |
Не задано | null | Никакого эффекта, но действует как Запрет, если никакие другие правила не применяются. |
Разрешения, установленные специально для учётной записи пользователя, имеют приоритет над разрешениями группы. Если разрешение не было задано в учётной записи, проверка доступа будет выполнена для всех групп пользователей, к которым принадлежит пользователь. Если какая-либо из групп пользователей отказала в действии, пользователь не имеет разрешения на это действие. В противном случае, если какая-либо из групп пользователей разрешила действие, разрешение будет предоставлено. Если разрешение не было установлено ни в одной из групп пользователей, то разрешение суперпользователь действует как универсальное разрешено, в противном случае будет применено отказано.
Полномочия, установленные для учетных записей пользователей и групп пользователей, действуют как разрешения по умолчанию для управления страницами. Все эти правила можно переопределить на любой странице вкладки Безопасность.
Рабочий процесс проверки доступа к странице CRUD⚓︎
Рабочий процесс проверки авторизации CRUD для отдельной страницы следующий:
- Задаем действие =
Создание
,Просмотр
,Обновление
,Удаление
илиСписок
- Проходим через все
группы страницы
, начиная с текущей - ищем совпадение со специальной группой
authors
, если пользователь указан вавторах страницы
- ищем совпадение со специальной группой
defaults
, если пользователь авторизован - ищем совпадение с текущей группой, если пользователь тоже имеет группу
- если совпадение есть
- если действие авторизации возвращает
Запрещено
: немедленно останавливаемся и возвращаемfalse
- если действие авторизации возвращает
Разрешено
: задаем флаг allow =true
- если действие авторизации возвращает
- продолжаем обработку следующей группы
- Пройдя через все группы, проверяем, есть ли у пользователя разрешение на это действие
- если флаг allow равен
true
: возвращаемtrue
- Проверяем права администратора глобальных страниц пользователя (только один раз)
- если действие авторизации возвращает
Запрещено
: возвращаемfalse
- если действие авторизации возвращает
Разрешено
: возвращаемtrue
- Проверяем, наследует ли страница родительские разрешения
- если
Inherit Permissions
=Yes
, делаем те же проверки для родительской страницы - иначе возвращаем
null
Корневая страница⚓︎
Корневая страница — специальная страница в Grav 1.7+, которая позволяет администраторам сайта устанавливать разрешения по умолчанию для всех страниц. Его может увидеть только Суперпользователь или пользователь с правами Настройка страниц.
Корневая страница будет сохранена в файле user/pages/root.md
и не будет содержать никакого контента, так как страница в настоящее время недоступна (это может измениться в будущем).