32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
"""passbook multi-factor authentication engine"""
|
||
|
from django.forms import ModelForm
|
||
|
from django.http import HttpRequest
|
||
|
from django.utils.translation import gettext as _
|
||
|
from django.views.generic import TemplateView
|
||
|
|
||
|
from passbook.core.models import User
|
||
|
from passbook.flows.view import AuthenticationView
|
||
|
from passbook.lib.config import CONFIG
|
||
|
|
||
|
|
||
|
class AuthenticationFactor(TemplateView):
|
||
|
"""Abstract Authentication factor, inherits TemplateView but can be combined with FormView"""
|
||
|
|
||
|
form: ModelForm = None
|
||
|
required: bool = True
|
||
|
authenticator: AuthenticationView
|
||
|
pending_user: User
|
||
|
request: HttpRequest = None
|
||
|
template_name = "login/form_with_user.html"
|
||
|
|
||
|
def __init__(self, authenticator: AuthenticationView):
|
||
|
self.authenticator = authenticator
|
||
|
self.pending_user = None
|
||
|
|
||
|
def get_context_data(self, **kwargs):
|
||
|
kwargs["config"] = CONFIG.y("passbook")
|
||
|
kwargs["title"] = _("Log in to your account")
|
||
|
kwargs["primary_action"] = _("Log in")
|
||
|
kwargs["user"] = self.pending_user
|
||
|
return super().get_context_data(**kwargs)
|