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")
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")
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"))