Spec-Zone.ru › Wagtail 2

Закрытые страницы

Пользователи с правом публикации на странице могут установить её в закрытый режим, нажав на элемент управления «Конфиденциальность» в правом верхнем углу обозревателя страниц или интерфейса редактирования. Это устанавливает ограничение для доступа к просмотру страницы и её подстраниц. Доступны несколько различных типов ограничений:

  • Доступ для авторизованных пользователей: Пользователь должен войти в систему, чтобы просмотреть страницу. Доступ предоставляется всем учётным записям пользователей, независимо от уровня разрешений.
  • Доступ по паролю: Пользователь должен ввести указанный пароль, чтобы просмотреть страницу. Это подходит для ситуаций, когда вы хотите поделиться страницей с доверенной группой людей, но предоставление им отдельных учётных записей окажется избыточным. Один и тот же пароль используется всеми пользователями, и это работает независимо от учётных записей пользователей, которые существуют на сайте.
  • Доступ для пользователей определённых групп: Пользователь должен быть авторизован и являться членом одной или нескольких указанных групп, чтобы просмотреть страницу.

Аналогично, документы могут быть сделаны закрытыми, поместив их в коллекцию с соответствующими настройками конфиденциальности (см. Разрешения на изображения/документы).

Закрытые страницы и документы работают в 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'
  • Предыдущая Локализация
  • Следующая Настройка Wagtail

Содержание страницы

  • Закрытые страницы
    • Настройка страницы входа
    • Настройка глобальной страницы «Требуется пароль»
    • Настройка страницы «Требуется пароль» для определённого типа страниц

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/privacy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API