Разрешения¶
Система разрешений django CMS является гибкой, детальной и многоуровневой.
Разрешительные режимы¶
Разрешения работают в двух различных режимах, в зависимости от настройки CMS_PERMISSION
.
Режим простых разрешений (
CMS_PERMISSION = False
): будут применяться только стандартные разрешения Django Users и Groups. Это режим по умолчанию.Режим разрешений на страницах (
CMS_PERMISSION = True
): помимо стандартных разрешений Django, django CMS предоставляет разрешения на уровне строк на страницах, позволяя вам контролировать доступ пользователей к различным разделам сайта, а также к сайтам в рамках многосайтового проекта.
Ключевые разрешения пользователей¶
Вы можете найти разрешения, которые вы можете установить для пользователя или групп в админке Django, в разделе Авторизация и авторизация. Они одинаково применимы как в режиме простых разрешений, так и в режиме страничных разрешений.
Фильтрация по cms
покажет те, которые принадлежат приложению CMS. Разрешения, которые понадобятся редактору CMS, скорее всего, будут включать:
cms | cms plugin
cms | page
cms | placeholder
cms | placeholder reference
cms | static placeholder
cms | placeholder reference
cms | title
Большинство из них предлагают обычные опции добавления/изменения/удаления, хотя есть и исключения, например, cms | placeholder | Can use Structure mode
.
См. ниже Используйте разрешения для групп, а не для пользователей о применении разрешений к группам, а не к пользователям.
Разрешения в режиме разрешений страницы¶
В режиме разрешения страниц вам также необходимо предоставить пользователям разрешения на нужные страницы и подсайты.
Глобальные и постраничные разрешения¶
Это может быть сделано двумя способами, всеместно или на каждой странице.
Глобальные разрешения страниц применяются ко всем страницам (или ко всем страницам подсайта в многосайтовом проекте). Глобальные разрешения страниц управляются в администраторе по адресу django CMS > Pages global permissions.
Персональные разрешения применяются к определенной странице и/или ее дочерним элементам и/или потомкам. Управление разрешениями для отдельных страниц осуществляется через панель инструментов (Страница > Разрешения), когда вы находитесь на соответствующей странице в режиме редактирования.
Ваши пользователи (если они не являются суперпользователями Django) должны иметь хотя бы одно из глобальных разрешений на страницу или разрешений на каждую страницу, чтобы иметь возможность редактировать любые страницы вообще.
Им также потребуется соответствующий user permissions, иначе у них не будет прав на редактирование страниц.
Параметры разрешения страницы¶
Пользователям или группам пользователей могут быть назначены как глобальные разрешения на страницы, так и разрешения на отдельные страницы. К ним относятся:
Можно добавить
Можно редактировать
Можно удалить
Может опубликовать
Возможность изменения расширенных настроек
Возможность изменения разрешений
Может двигаться
Даже если пользователь может иметь права Can edit на странице, это не дает ему прав на добавление или изменение плагинов в пределах этой страницы. Чтобы иметь возможность добавлять/изменять/удалять плагины на любой странице, вам придется пройти через the standard Django permissions, чтобы предоставить пользователям действия, которые они могут выполнять, например:
cms | page | Can publish page
чтобы опубликовать его
cms | cms plugins | Can edit cms plugin
для редактирования плагинов на странице
Разрешения на каждую страницу¶
Управление разрешениями для каждой страницы осуществляется путем выбора Permissions из меню Page на панели инструментов, когда вы находитесь на странице (эта опция доступна только при включенном режиме CMS_PERMISSION
).
Login required определяет, смогут ли анонимные посетители вообще увидеть страницу.
Видимость меню определяет, кто будет иметь возможность видеть страницу в навигационных меню - все, или только зарегистрированные или анонимные пользователи.
Ограничения просмотра определяют, какие группы и пользователи смогут увидеть страницу после ее публикации. Добавление ограничения просмотра позволит вам установить это. Обратите внимание, что это не накладывает никаких ограничений на пользователей, которые также являются редакторами с соответствующими правами.
Разрешения страницы определяют, что редакторы могут делать со страницей (или иерархией страниц). Они описаны выше в Параметры разрешения страницы.
Новые модели администраторов¶
При включении CMS_PERMISSION
, а также Pages global permissions вы найдете две новые модели, доступные в админке CMS:
User groups (page)
Пользователи (страница)
Вы увидите, что последние два просто отражают разрешения Django Groups и User, которые уже существуют в системе, и их можно игнорировать.
Разрешительные стратегии¶
Для простого сайта с несколькими пользователями вам, возможно, не нужно беспокоиться об этом, но при наличии тысяч страниц, принадлежащих различным отделам и пользователям с сильно различающимися уровнями полномочий и опыта, важно понимать, кто и что может делать на вашем сайте.
Используйте разрешения для групп, а не для пользователей¶
Избегайте применения разрешений к отдельным пользователям, если в этом нет острой необходимости. Гораздо лучше применять их к группам и добавлять пользователей в группы. В противном случае вы рискуете получить большое количество пользователей с неизвестными или неподходящими разрешениями.
Используйте группы для создания разрешений¶
Разные пользователи могут нуждаться в разных подмножествах разрешений. Например, вы можете определить группу Основной редактор контента, которая может редактировать и публиковать страницы и контент, но не имеет права создавать новые; это право будет предоставлено группе Ведущий редактор контента. Другая группа может иметь разрешения на использование веб-блога.
Затем, при управлении пользователем, поместите его в соответствующие группы.
Два измерения разрешений¶
Вы можете разделить права доступа пользователей по двум параметрам:
какие действия должны быть разрешены этому пользователю или группе пользователей (например, публикация страниц, добавление новых плагинов, создание новых пользователей и т.д.)
на каких разделах сайта пользователю должно быть разрешено это делать (главная страница, ограниченный набор ведомственных страниц и т.д.)
Группы очень полезны для управления этим. Например, вы можете создать группу Европа для редакторов, которым разрешено редактировать иерархию страницы Европа или подсайт. Затем группа может быть добавлена в global or per-page permission.