def handle(self, request, data): email = data.get("email") try: res = keystoneapi.get_user(email) if not (res.get("success") or res.get("result")): return None user = res.get("result") user_id = user.get('id') email_activation_code = generate_sms_activation_code() data = {"email_activation_code": email_activation_code, "email_activation_code_time": timeutils.strtime()} # email confirmation about the change send_templated_email("JioCloud account password change confirmation", [email], html_template="signup/password_change_verification.html", template_context={ "name": user.get("first_name") if user.get("first_name") else user.get("name"), "reset_password_path": reverse_lazy('horizon_jiocloud:resetPassword', kwargs={'user_id':user_id, 'code':email_activation_code}), "SITE_URL": getattr(settings, "SITE_URL", "http://127.0.0.1"), }) # push changes to keystone database response = keystoneapi.update_user(user_id, data) except Exception as e: LOG.exception(e) return render_to_response('signup/forgot_password_success.html', {'email':settings.DEFAULT_FROM_EMAIL, 'user_id': user_id})
def handle(self, request, data): phone = data.get("phone") request.session["phone"] = phone if not self.fields.has_key("sms_activation_code"): # No "sms_activation_code" field in form # So generate OTP to start phone number change process; # send SMS containing the OTP and store OTP details # in database for later verification sms_activation_code = generate_sms_activation_code() data = {"sms_activation_code": sms_activation_code, "sms_activation_code_time": timeutils.strtime()} try: generate_and_send_sms(phone, sms_activation_code) messages.success(request, 'Please enter the SMS code to change phone number') except Exception as ex: LOG.exception(ex) self.set_non_field_errors([ self.get_default_error_message() ]) return None else: # check if the code submitted in the form and that in the # database match code = data.get("sms_activation_code") sms_activation_code = self.user.get("sms_activation_code") if sms_activation_code not in [code]: self.set_non_field_errors(["Invalid Activation Code"]) return None # codes matched. so we will change the phone number # in database. # sms_activation_code no more required so unset it # in database. data["sms_activation_code"] = "" request.session["phone"] = "" try: # email confirmation about the change send_templated_email("JioCloud account phone number changed", [self.user.get("email")], html_template="change_phone/phone_change_cofirmation_email.html", template_context={ "name": self.user.get("first_name") if self.user.get("first_name") else self.user.get("name"), "phone": phone, }) messages.success(request, 'Phone number has been updated successfully.') except Exception as ex: LOG.exception(ex) try: # push changes to keystone database response = keystoneapi.update_user(self.request.user.id, data) except Exception: response = exceptions.handle(request, ignore=True) messages.error(request, 'Unable to change phone number.') return shortcuts.redirect(request.build_absolute_uri())
def handle(self, request, data): new_email = data.get("email") email_activation_code = generate_sms_activation_code() data = {"email_activation_code": email_activation_code, "email_activation_code_time": timeutils.strtime()} try: # email confirmation about the change send_templated_email("JioCloud account email change confirmation", [new_email], html_template="change_email/email_change_verification.html", template_context={ "name": self.user.get("first_name") if self.user.get("first_name") else self.user.get("name"), "email_activation_path": reverse('horizon:settings:email:index') + 'activate/' + email_activation_code + '?email=' + new_email, }) # push changes to keystone database response = keystoneapi.update_user(self.request.user.id, data) messages.success(request, 'Please click the link sent to your new email to activate it') except Exception as ex: LOG.exception(ex) response = exceptions.handle(request, ignore=True) messages.error(request, 'Unable to change email.') return shortcuts.redirect(request.build_absolute_uri())