From 8ae13e29f56191579d01ad8a274d1031404d4d7c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 7 Mar 2018 11:20:10 -0500 Subject: [PATCH] Fixes #1955: Require a plaintext value when creating a new secret --- netbox/secrets/forms.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/netbox/secrets/forms.py b/netbox/secrets/forms.py index bcc79e2a5..8f8107805 100644 --- a/netbox/secrets/forms.py +++ b/netbox/secrets/forms.py @@ -58,17 +58,34 @@ class SecretRoleCSVForm(forms.ModelForm): # class SecretForm(BootstrapMixin, forms.ModelForm): - plaintext = forms.CharField(max_length=65535, required=False, label='Plaintext', - widget=forms.PasswordInput(attrs={'class': 'requires-session-key'})) - plaintext2 = forms.CharField(max_length=65535, required=False, label='Plaintext (verify)', - widget=forms.PasswordInput()) + plaintext = forms.CharField( + max_length=65535, + required=False, + label='Plaintext', + widget=forms.PasswordInput(attrs={'class': 'requires-session-key'}) + ) + plaintext2 = forms.CharField( + max_length=65535, + required=False, + label='Plaintext (verify)', + widget=forms.PasswordInput() + ) class Meta: model = Secret fields = ['role', 'name', 'plaintext', 'plaintext2'] + def __init__(self, *args, **kwargs): + + super(SecretForm, self).__init__(*args, **kwargs) + + # A plaintext value is required when creating a new Secret + if not self.instance.pk: + self.fields['plaintext'].required = True + def clean(self): + # Verify that the provided plaintext values match if self.cleaned_data['plaintext'] != self.cleaned_data['plaintext2']: raise forms.ValidationError({ 'plaintext2': "The two given plaintext values do not match. Please check your input."