def __init__(self, request, user, *args, **kwargs): super(VerifyTwoFactorForm, self).__init__(*args, **kwargs) self.user = user self.authy_service = AuthyService(user=self.user) if request.method in ['GET']: self.authy_service.request_sms_token() self.helper = FormHelper() self.helper.attrs = { 'autocomplete': 'off', 'parsley-validate': '', } self.helper.form_show_errors = False self.helper.layout = Layout( HTML('{% include "partials/form-errors.html" with form=form %}'), Fieldset( '', Field('token', css_class='input-hg'), ), ButtonHolder( Submit('submit', 'Secure Sign In', css_class='btn btn-primary btn-lg') ) )
class VerifyTwoFactorForm(forms.Form): token = forms.CharField( error_messages={ 'required': "Verification code can not be blank." }, label='', help_text='Please enter the verification code generated by your Authy mobile application or sent to you via SMS.', widget=forms.TextInput(attrs={ 'autocomplete': 'off', 'id': 'authy-token' }) ) def __init__(self, request, user, *args, **kwargs): super(VerifyTwoFactorForm, self).__init__(*args, **kwargs) self.user = user self.authy_service = AuthyService(user=self.user) if request.method in ['GET']: self.authy_service.request_sms_token() self.helper = FormHelper() self.helper.attrs = { 'autocomplete': 'off', 'parsley-validate': '', } self.helper.form_show_errors = False self.helper.layout = Layout( HTML('{% include "partials/form-errors.html" with form=form %}'), Fieldset( '', Field('token', css_class='input-hg'), ), ButtonHolder( Submit('submit', 'Secure Sign In', css_class='btn btn-primary btn-lg') ) ) def clean_token(self): token = self.cleaned_data.get('token') if self.authy_service.verify_token(token) is False: raise forms.ValidationError('Sorry, that Authy Token is not valid: %s' % self.authy_service.errors.get('message', 'Unknown Error'))