Закрытые страницы
Пользователи с правами публикации на странице могут установить её в закрытый режим, нажав на элемент управления «Конфиденциальность» в правом верхнем углу проводника страниц или интерфейса редактирования. Это устанавливает ограничение на доступ к просмотру страницы и её подстраниц. Доступны несколько типов ограничений:
- Доступ только авторизованным пользователям: Пользователь должен войти в систему, чтобы просмотреть страницу. Все учётные записи пользователей получают доступ независимо от уровня разрешений.
- Доступ с указанным паролем: Пользователь должен ввести указанный пароль, чтобы просмотреть страницу. Это подходит для ситуаций, когда вы хотите поделиться страницей с надёжной группой людей, но предоставление им индивидуальных учётных записей будет избыточным. Один и тот же пароль используется всеми пользователями, и это работает независимо от любых учётных записей пользователей, которые существуют на сайте.
- Доступ только пользователям определённых групп: Пользователь должен войти в систему и быть членом одной или нескольких указанных групп, чтобы просмотреть страницу.
Аналогичным образом, документы могут быть сделаны закрытыми, поместив их в коллекцию с соответствующими настройками конфиденциальности (см. Разрешения на изображения/документы).
Закрытые страницы и документы работают в Wagtail по умолчанию — администратору сайта ничего не нужно делать для их настройки. Однако формы по умолчанию «Вход» и «Требуется пароль» — это только базовые HTML-страницы, и администраторы сайта могут захотеть заменить их страницей, настроенной под дизайн их сайта.
Настройка страницы входа
Базовая страница входа может быть настраиваема, установив WAGTAIL_FRONTEND_LOGIN_TEMPLATE путь к шаблону, который вы хотите использовать:
WAGTAIL_FRONTEND_LOGIN_TEMPLATE = 'myapp/login.html'
Wagtail использует стандартный django.contrib.auth.views.LoginView Django здесь, и поэтому доступные переменные контекста в шаблоне подробно описаны в Django's login view documentation.
Если стандартный Django-вид входа не подходит — например, вы хотите использовать внешнюю систему аутентификации или интегрируете Wagtail в существующий сайт Django, у которого уже есть рабочий вид входа — вы можете указать URL-адрес вида входа с помощью настройки WAGTAIL_FRONTEND_LOGIN_URL:
WAGTAIL_FRONTEND_LOGIN_URL = '/accounts/login/'
Для интеграции Wagtail в сайт Django с существующим механизмом входа, установка WAGTAIL_FRONTEND_LOGIN_URL = LOGIN_URL обычно будет достаточной.
Настройка глобальной страницы «Требуется пароль»
Установив PASSWORD_REQUIRED_TEMPLATE в файле настроек Django, вы можете указать путь к шаблону, который будет использоваться для всех форм «Требуется пароль» на сайте (за исключением типов страниц, которые специально переопределяют его — см. ниже):
PASSWORD_REQUIRED_TEMPLATE = 'myapp/password_required.html'
Этот шаблон получит тот же набор переменных контекста, что и заблокированная страница передавала бы в свой шаблон через get_context() — включая page для ссылки на сам объект страницы — плюс следующие дополнительные переменные (которые переопределяют любые собственные переменные контекста страницы с тем же именем):
-
form - Объект формы Django для запроса пароля; это будет содержать поле с именем
passwordв качестве единственного видимого поля. Также могут присутствовать несколько скрытых полей, поэтому страница должна перебиратьform.hidden_fields, если не используется один из помощников рендеринга Django, такой какform.as_p. - action_url - URL-адрес, на который должна быть отправлена форма пароля в качестве запроса POST.
Базовый шаблон, подходящий для использования в качестве PASSWORD_REQUIRED_TEMPLATE , может выглядеть следующим образом:
<!DOCTYPE HTML>
<html>
<head>
<title>Password required</title>
</head>
<body>
<h1>Password required</h1>
<p>You need a password to access this page.</p>
<form action="{{ action_url }}" method="POST">
{% csrf_token %}
{{ form.non_field_errors }}
<div>
{{ form.password.errors }}
{{ form.password.label_tag }}
{{ form.password }}
</div>
{% for field in form.hidden_fields %}
{{ field }}
{% endfor %}
<input type="submit" value="Continue" />
</form>
</body>
</html>
Ограничения по паролям на документы используют отдельный шаблон, указанный через настройку DOCUMENT_PASSWORD_REQUIRED_TEMPLATE; этот шаблон также получает переменные контекста form и action_url как описано выше.
Настройка страницы «Требуется пароль» для определённого типа страницы
Атрибут password_required_template может быть определён в модели страницы для использования настраиваемого шаблона для просмотра «Требуется пароль» только для этого типа страницы. Например, если сайт имел тип страницы для отображения встроенных видео вместе с описанием, он мог бы выбрать настраиваемый шаблон «Требуется пароль», который отображал бы описание видео как обычно, но показывал бы форму пароля вместо встраивания видео.
class VideoPage(Page):
...
password_required_template = 'video/password_required.html'
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v3.0.3/advanced_topics/privacy.html