Do SSH key validation only if the user doesn't have an existing key and

the user has input some value in the add ssh key field
This commit is contained in:
PCoder 2019-06-25 03:48:29 +02:00
parent 34c917acc2
commit feeb102f92
3 changed files with 32 additions and 23 deletions

View file

@ -588,19 +588,18 @@ class OrderConfirmationView(DetailView, FormView):
return render(request, self.template_name, context) return render(request, self.template_name, context)
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
user = request.session.get('user')
stripe_api_cus_id = request.session.get('customer')
stripe_utils = StripeUtils()
# Check ssh public key and then proceed # Check ssh public key and then proceed
form = self.get_form() form = self.get_form()
required = 'add_ssh' in self.request.POST required = True
# SSH key is required only if the user doesn't have an existing # SSH key validation is required only if the user doesn't have an
# key # existing key and user has input some value in the add ssh key fields
if len(get_all_public_keys(self.request.user)) == 0: if (len(get_all_public_keys(self.request.user)) > 0 and
form.fields['name'].required = required (len(form.data.get('public_key')) == 0 and
form.fields['public_key'].required = required len(form.data.get('name')) == 0)):
required = False
form.fields['name'].required = required
form.fields['public_key'].required = required
if not form.is_valid(): if not form.is_valid():
response = { response = {
'status': False, 'status': False,
@ -609,9 +608,14 @@ class OrderConfirmationView(DetailView, FormView):
} }
return JsonResponse(response) return JsonResponse(response)
# We have a valid SSH key from the user, save it in opennebula and db if required:
# and proceed further # We have a valid SSH key from the user, save it in opennebula and
form.save() # db and proceed further
form.save()
user = request.session.get('user')
stripe_api_cus_id = request.session.get('customer')
stripe_utils = StripeUtils()
if 'token' in request.session: if 'token' in request.session:
card_details = stripe_utils.get_cards_details_from_token( card_details = stripe_utils.get_cards_details_from_token(

View file

@ -187,7 +187,8 @@ class UserHostingKeyForm(forms.ModelForm):
alerts the user of it. alerts the user of it.
:return: :return:
""" """
if 'generate' in self.request.POST: if ('generate' in self.request.POST
or not self.fields['public_key'].required):
return self.data.get('public_key') return self.data.get('public_key')
KEY_ERROR_MESSAGE = _("Please input a proper SSH key") KEY_ERROR_MESSAGE = _("Please input a proper SSH key")
openssh_pubkey_str = self.data.get('public_key').strip() openssh_pubkey_str = self.data.get('public_key').strip()

View file

@ -1004,13 +1004,16 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView, FormView):
def post(self, request): def post(self, request):
# Check ssh public key and then proceed # Check ssh public key and then proceed
form = self.get_form() form = self.get_form()
required = 'add_ssh' in self.request.POST required = True
# SSH key is required only if the user doesn't have an existing # SSH key validation is required only if the user doesn't have an
# key # existing key and user has input some value in the add ssh key fields
if len(get_all_public_keys(self.request.user)) == 0: if (len(get_all_public_keys(self.request.user)) > 0 and
form.fields['name'].required = required (len(form.data.get('public_key')) == 0 and
form.fields['public_key'].required = required len(form.data.get('name')) == 0)):
required = False
form.fields['name'].required = required
form.fields['public_key'].required = required
if not form.is_valid(): if not form.is_valid():
response = { response = {
'status': False, 'status': False,
@ -1019,9 +1022,10 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView, FormView):
} }
return JsonResponse(response) return JsonResponse(response)
# We have a valid SSH key from the user, save it in opennebula and db if required:
# and proceed further # We have a valid SSH key from the user, save it in opennebula and
form.save() # db and proceed further
form.save()
template = request.session.get('template') template = request.session.get('template')
specs = request.session.get('specs') specs = request.session.get('specs')