33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			33 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.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)
 |