コード例 #1
0
ファイル: forms.py プロジェクト: JioCloud/horizon
 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})
コード例 #2
0
ファイル: forms.py プロジェクト: JioCloud/horizon
    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())
コード例 #3
0
ファイル: forms.py プロジェクト: JioCloud/horizon
    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())