"""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.factors.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['is_login'] = True kwargs['title'] = _('Log in to your account') kwargs['primary_action'] = _('Log in') kwargs['user'] = self.pending_user return super().get_context_data(**kwargs)