Browse Source

Fixes #1132: Prompt user to unlock session key when importing secrets

Jeremy Stretch 8 years ago
parent
commit
7eb9c8265c

+ 5 - 2
netbox/project-static/js/secrets.js

@@ -15,8 +15,11 @@ $(document).ready(function() {
     });
 
     // Adding/editing a secret
-    $('form.requires-session-key').submit(function(event) {
-        if ($('#id_plaintext').val() && document.cookie.indexOf('session_key') == -1) {
+    $('form').submit(function(event) {
+        if (
+            $(this).find('input.requires-session-key').filter(function() {return this.value == ""}) &&
+            document.cookie.indexOf('session_key') == -1
+        ) {
             $('#privkey_modal').modal('show');
             event.preventDefault();
         }

+ 2 - 2
netbox/secrets/forms.py

@@ -48,7 +48,7 @@ class SecretRoleForm(BootstrapMixin, forms.ModelForm):
 
 class SecretForm(BootstrapMixin, forms.ModelForm):
     plaintext = forms.CharField(max_length=65535, required=False, label='Plaintext',
-                                widget=forms.PasswordInput())
+                                widget=forms.PasswordInput(attrs={'class': 'requires-session-key'}))
     plaintext2 = forms.CharField(max_length=65535, required=False, label='Plaintext (verify)',
                                  widget=forms.PasswordInput())
 
@@ -82,7 +82,7 @@ class SecretFromCSVForm(forms.ModelForm):
 
 
 class SecretImportForm(BootstrapMixin, BulkImportForm):
-    csv = CSVDataField(csv_form=SecretFromCSVForm)
+    csv = CSVDataField(csv_form=SecretFromCSVForm, widget=forms.Textarea(attrs={'class': 'requires-session-key'}))
 
 
 class SecretBulkEditForm(BootstrapMixin, BulkEditForm):

+ 1 - 1
netbox/templates/secrets/secret_edit.html

@@ -5,7 +5,7 @@
 {% block title %}{% if secret.pk %}Editing {{ secret }}{% else %}Add a Secret{% endif %}{% endblock %}
 
 {% block content %}
-<form action="." method="post" class="form form-horizontal requires-session-key">
+<form action="." method="post" class="form form-horizontal">
     {% csrf_token %}
     {{ form.private_key }}
     <div class="row">