Parcourir la source

Fixes #1955: Require a plaintext value when creating a new secret

Jeremy Stretch il y a 7 ans
Parent
commit
8ae13e29f5
1 fichiers modifiés avec 21 ajouts et 4 suppressions
  1. 21 4
      netbox/secrets/forms.py

+ 21 - 4
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."