Как сделать аутентификацию пароля с помощью QR для html-формы django

Я сделал защищенную паролем страницу с помощью django и cms wagtail, мне нужно, чтобы произошли следующие случаи:

Если пользователь вводит url нормально: страница требует от него пароль через HTML-форму и не дает ему доступ к ней, пока он не введет правильный пароль (Done).

Если пользователь входит с помощью QR-кода: страница не требует от него пароля, и он сразу получает доступ к содержимому страницы.

Models.py:

from wagtail.core.models import Page, PageViewRestriction
from wagtail.images.edit_handlers import ImageChooserPanel

from django.utils.translation import gettext_lazy as _

class ProfilePage(Page):
    template = 'profile/profile_page.html'

    def get_context(self, request, *args, **kwargs):

        context = super().get_context(request, *args, **kwargs)
        
        return context

    def save(self, *args, **kwargs):
        your_page = ProfilePage.objects.all().first()
        PageViewRestriction.objects.create(page=your_page, restriction_type='password')

        return super().save(*args, **kwargs)

шаблон пароля (шаблон по умолчанию):

<!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> 

Я думаю, вам нужно, чтобы url вашего QR-кода переходил к представлению, которое автоматически регистрирует человека на публичной стороне вашего сайта, а затем перенаправляет на страницу с ограниченным доступом. Это подразумевает, что либо у вас есть общий аккаунт для просмотра ограниченного содержимого (он же guess account), либо вы будете создавать отдельные QR-коды для каждой комбинации пользователь/url.

Вернуться на верх