mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #486: Prompt for secret key only if updating a secret's value
This commit is contained in:
@ -25,17 +25,20 @@ $(document).ready(function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Adding/editing a secret
|
// Adding/editing a secret
|
||||||
$('form.requires-private-key').submit(function(event) {
|
private_key_field = $('#id_private_key');
|
||||||
|
private_key_field.parents('form').submit(function(event) {
|
||||||
|
console.log("form submitted");
|
||||||
var private_key = sessionStorage.getItem('private_key');
|
var private_key = sessionStorage.getItem('private_key');
|
||||||
if (private_key) {
|
if (private_key) {
|
||||||
$('#id_private_key').val(private_key);
|
private_key_field.val(private_key);
|
||||||
} else {
|
} else if ($('form .requires-private-key:first').val()) {
|
||||||
|
console.log("we need a key!");
|
||||||
$('#privkey_modal').modal('show');
|
$('#privkey_modal').modal('show');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Prompt the user to enter a private RSA key for decryption
|
// Saving a private RSA key locally
|
||||||
$('#submit_privkey').click(function() {
|
$('#submit_privkey').click(function() {
|
||||||
var private_key = $('#user_privkey').val();
|
var private_key = $('#user_privkey').val();
|
||||||
sessionStorage.setItem('private_key', private_key);
|
sessionStorage.setItem('private_key', private_key);
|
||||||
|
@ -47,8 +47,9 @@ class SecretRoleForm(forms.ModelForm, BootstrapMixin):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class SecretForm(forms.ModelForm, BootstrapMixin):
|
class SecretForm(forms.ModelForm, BootstrapMixin):
|
||||||
private_key = forms.CharField(widget=forms.HiddenInput())
|
private_key = forms.CharField(required=False, widget=forms.HiddenInput())
|
||||||
plaintext = forms.CharField(max_length=65535, required=False, label='Plaintext')
|
plaintext = forms.CharField(max_length=65535, required=False, label='Plaintext',
|
||||||
|
widget=forms.TextInput(attrs={'class': 'requires-private-key'}))
|
||||||
plaintext2 = forms.CharField(max_length=65535, required=False, label='Plaintext (verify)')
|
plaintext2 = forms.CharField(max_length=65535, required=False, label='Plaintext (verify)')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -56,6 +57,7 @@ class SecretForm(forms.ModelForm, BootstrapMixin):
|
|||||||
fields = ['role', 'name', 'plaintext', 'plaintext2']
|
fields = ['role', 'name', 'plaintext', 'plaintext2']
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
if self.cleaned_data['plaintext']:
|
||||||
validate_rsa_key(self.cleaned_data['private_key'])
|
validate_rsa_key(self.cleaned_data['private_key'])
|
||||||
|
|
||||||
def clean_plaintext2(self):
|
def clean_plaintext2(self):
|
||||||
@ -84,7 +86,7 @@ class SecretFromCSVForm(forms.ModelForm):
|
|||||||
|
|
||||||
class SecretImportForm(BulkImportForm, BootstrapMixin):
|
class SecretImportForm(BulkImportForm, BootstrapMixin):
|
||||||
private_key = forms.CharField(widget=forms.HiddenInput())
|
private_key = forms.CharField(widget=forms.HiddenInput())
|
||||||
csv = CSVDataField(csv_form=SecretFromCSVForm)
|
csv = CSVDataField(csv_form=SecretFromCSVForm, widget=forms.Textarea(attrs={'class': 'requires-private-key'}))
|
||||||
|
|
||||||
|
|
||||||
class SecretBulkEditForm(forms.Form, BootstrapMixin):
|
class SecretBulkEditForm(forms.Form, BootstrapMixin):
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{% block title %}{% if secret.pk %}Editing {{ secret }}{% else %}Add a Secret{% endif %}{% endblock %}
|
{% block title %}{% if secret.pk %}Editing {{ secret }}{% else %}Add a Secret{% endif %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form action="." method="post" class="form form-horizontal requires-private-key">
|
<form action="." method="post" class="form form-horizontal">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.private_key }}
|
{{ form.private_key }}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form action="." method="post" class="form requires-private-key">
|
<form action="." method="post" class="form">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% render_form form %}
|
{% render_form form %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
@ -130,11 +130,11 @@ class CSVDataField(forms.CharField):
|
|||||||
'"New York, NY",new-york-ny,Other stuff' => ['New York, NY', 'new-york-ny', 'Other stuff']
|
'"New York, NY",new-york-ny,Other stuff' => ['New York, NY', 'new-york-ny', 'Other stuff']
|
||||||
"""
|
"""
|
||||||
csv_form = None
|
csv_form = None
|
||||||
|
widget = forms.Textarea
|
||||||
|
|
||||||
def __init__(self, csv_form, *args, **kwargs):
|
def __init__(self, csv_form, *args, **kwargs):
|
||||||
self.csv_form = csv_form
|
self.csv_form = csv_form
|
||||||
self.columns = self.csv_form().fields.keys()
|
self.columns = self.csv_form().fields.keys()
|
||||||
self.widget = forms.Textarea
|
|
||||||
super(CSVDataField, self).__init__(*args, **kwargs)
|
super(CSVDataField, self).__init__(*args, **kwargs)
|
||||||
self.strip = False
|
self.strip = False
|
||||||
if not self.label:
|
if not self.label:
|
||||||
|
Reference in New Issue
Block a user