Example #1
0
        def signup(self):
            """
            For Email Signup
            :return:
            """
            self._login_enabled()
            self._signup_enabled()
            self.meta_(title="Signup")

            if request.method == "POST":
                # reCaptcha
                if not recaptcha.verify():
                    flash_error("Invalid Security code")
                    return redirect(url_for("UserAccount:signup", next=request.form.get("next")))
                try:
                    name = request.form.get("name")
                    email = request.form.get("email")
                    password = request.form.get("password")
                    password2 = request.form.get("password2")
                    profile_image_url = request.form.get("profile_image_url", None)

                    if not name:
                        raise ViewError("Name is required")
                    elif not utils.is_valid_email(email):
                        raise ViewError("Invalid email address '%s'" % email)
                    elif not password.strip() or password.strip() != password2.strip():
                        raise ViewError("Passwords don't match")
                    elif not utils.is_valid_password(password):
                        raise ViewError("Invalid password")
                    else:
                        new_account = User.new(
                            email=email,
                            password=password.strip(),
                            first_name=name,
                            profile_image_url=profile_image_url,
                            signup_method="email",
                        )

                        self.login_user(new_account)
                        return redirect(request.form.get("next") or url_for(on_signin_view))
                except Exception as ex:
                    flash_error(ex.message)
                return redirect(url_for("UserAccount:signup", next=request.form.get("next")))

            logout_user()
            return self.render_(login_url_next=request.args.get("next", ""), view_template_=template_page % "signup")
Example #2
0
        def change_password_handler(cls, user_context=None, password=None, password2=None):
            if not user_context:
                user_context = current_user
            if not password:
                password = request.form.get("password").strip()
            if not password2:
                password2 = request.form.get("password2").strip()

            if password:
                if password != password2:
                    raise UserWarning("Password don't match")
                elif not utils.is_valid_password(password):
                    raise UserWarning("Invalid password")
                else:
                    user_context.set_password(password)
                    return True
            else:
                raise UserWarning("Password is empty")
Example #3
0
        def setup_login(self):
            """
            Allows to setup a email password if it's not provided specially
            coming from oauth-login
            :return:
            """
            self._login_enabled()
            self.meta_(title="Setup  Login")

            # Only user without email can set email
            if current_user.is_authenticated() and current_user.email:
                return redirect(url_for("%s:account_settings" % view_name))

            if self.tmp_data:
                if request.method == "POST":
                    if not self.tmp_data["is_oauth"]:
                        return redirect("UserAccount:login")

                    try:
                        email = request.form.get("email")
                        password = request.form.get("password")
                        password2 = request.form.get("password2")

                        if not utils.is_valid_email(email):
                            raise ViewError("Invalid email address '%s'" % email)
                        elif User.get_by_email(email):
                            raise ViewError("An account exists already with this email address '%s' " % email)
                        elif not password.strip() or password.strip() != password2.strip():
                            raise ViewError("Passwords don't match")
                        elif not utils.is_valid_password(password):
                            raise ViewError("Invalid password")
                        else:
                            user = User.new(
                                email=email,
                                password=password.strip(),
                                name=self.tmp_data["name"],
                                profile_image_url=self.tmp_data["picture"],
                                signup_method=self.tmp_data["provider"],
                            )

                            user.add_oauth(
                                self.tmp_data["provider"],
                                self.tmp_data["id"],
                                name=self.tmp_data["name"],
                                email=email,
                                profile_image_url=self.tmp_data["picture"],
                                link=self.tmp_data["link"],
                            )

                            self.login_user(user)
                            self.tmp_data = None

                        return redirect(request.form.get("next") or url_for(on_signin_view))
                    except Exception as ex:
                        flash_error(ex.message)
                        return redirect(url_for("UserAccount:setup_login"))

                return self.render_(provider=self.tmp_data, view_template_=template_page % "setup_login")

            else:
                return redirect(url_for("UserAccount:login"))