| """ |
| Forms for the security app — MFA setup, verification, and device management. |
| """ |
| from django import forms |
|
|
|
|
| class MFASetupForm(forms.Form): |
| """Verify OTP code during TOTP setup.""" |
|
|
| otp_code = forms.CharField( |
| max_length=6, |
| min_length=6, |
| widget=forms.TextInput( |
| attrs={ |
| "class": "form-input", |
| "placeholder": "000000", |
| "autocomplete": "one-time-code", |
| "id": "mfa-otp-code", |
| "pattern": "[0-9]{6}", |
| "inputmode": "numeric", |
| } |
| ), |
| ) |
|
|
|
|
| class MFAVerifyForm(forms.Form): |
| """Verify OTP code during login.""" |
|
|
| otp_code = forms.CharField( |
| max_length=6, |
| min_length=6, |
| widget=forms.TextInput( |
| attrs={ |
| "class": "form-input", |
| "placeholder": "000000", |
| "autocomplete": "one-time-code", |
| "id": "mfa-verify-code", |
| "pattern": "[0-9]{6}", |
| "inputmode": "numeric", |
| } |
| ), |
| ) |
| trust_device = forms.BooleanField(required=False) |
|
|
|
|
| class BackupCodeForm(forms.Form): |
| """Verify a backup code for MFA recovery.""" |
|
|
| backup_code = forms.CharField( |
| max_length=9, |
| widget=forms.TextInput( |
| attrs={ |
| "class": "form-input", |
| "placeholder": "XXXX-XXXX", |
| "id": "backup-code", |
| } |
| ), |
| ) |
|
|