Перейти к содержанию

Разрешения страницы⚓︎

Разрешения пользователя/группы для страниц:

Параметр Значение Описание
Настройка 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 для отдельной страницы следующий:

  1. Задаем действие = Создание, Просмотр, Обновление, Удаление или Список
  2. Проходим через все группы страницы, начиная с текущей
  3. ищем совпадение со специальной группой authors, если пользователь указан в авторах страницы
  4. ищем совпадение со специальной группой defaults, если пользователь авторизован
  5. ищем совпадение с текущей группой, если пользователь тоже имеет группу
  6. если совпадение есть
    • если действие авторизации возвращает Запрещено: немедленно останавливаемся и возвращаем false
    • если действие авторизации возвращает Разрешено: задаем флаг allow = true
  7. продолжаем обработку следующей группы
  8. Пройдя через все группы, проверяем, есть ли у пользователя разрешение на это действие
  9. если флаг allow равен true: возвращаем true
  10. Проверяем права администратора глобальных страниц пользователя (только один раз)
  11. если действие авторизации возвращает Запрещено: возвращаем false
  12. если действие авторизации возвращает Разрешено: возвращаем true
  13. Проверяем, наследует ли страница родительские разрешения
  14. если Inherit Permissions = Yes, делаем те же проверки для родительской страницы
  15. иначе возвращаем null

Корневая страница⚓︎

Корневая страница — специальная страница в Grav 1.7+, которая позволяет администраторам сайта устанавливать разрешения по умолчанию для всех страниц. Его может увидеть только Суперпользователь или пользователь с правами Настройка страниц.

Корневая страница будет сохранена в файле user/pages/root.md и не будет содержать никакого контента, так как страница в настоящее время недоступна (это может измениться в будущем).