52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook administration forms"""
 | 
						|
from django import forms
 | 
						|
from django.conf import settings
 | 
						|
from django.contrib.admin.widgets import FilteredSelectMultiple
 | 
						|
from django.utils.translation import gettext as _
 | 
						|
 | 
						|
from passbook.factors.forms import GENERAL_FIELDS
 | 
						|
from passbook.factors.password.models import PasswordFactor
 | 
						|
from passbook.lib.utils.reflection import path_to_class
 | 
						|
 | 
						|
 | 
						|
def get_authentication_backends():
 | 
						|
    """Return all available authentication backends as tuple set"""
 | 
						|
    for backend in settings.AUTHENTICATION_BACKENDS:
 | 
						|
        klass = path_to_class(backend)
 | 
						|
        yield backend, getattr(
 | 
						|
            klass(), "name", "%s (%s)" % (klass.__name__, klass.__module__)
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
class PasswordForm(forms.Form):
 | 
						|
    """Password authentication form"""
 | 
						|
 | 
						|
    password = forms.CharField(
 | 
						|
        widget=forms.PasswordInput(
 | 
						|
            attrs={
 | 
						|
                "placeholder": _("Password"),
 | 
						|
                "autofocus": "autofocus",
 | 
						|
                "autocomplete": "current-password",
 | 
						|
            }
 | 
						|
        )
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class PasswordFactorForm(forms.ModelForm):
 | 
						|
    """Form to create/edit Password Factors"""
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        model = PasswordFactor
 | 
						|
        fields = GENERAL_FIELDS + ["backends", "password_policies", "reset_factors"]
 | 
						|
        widgets = {
 | 
						|
            "name": forms.TextInput(),
 | 
						|
            "order": forms.NumberInput(),
 | 
						|
            "policies": FilteredSelectMultiple(_("policies"), False),
 | 
						|
            "backends": FilteredSelectMultiple(
 | 
						|
                _("backends"), False, choices=get_authentication_backends()
 | 
						|
            ),
 | 
						|
            "password_policies": FilteredSelectMultiple(_("password policies"), False),
 | 
						|
            "reset_factors": FilteredSelectMultiple(_("reset factors"), False),
 | 
						|
        }
 |