def change_login_handler(cls, user_context=None, email=None): if not user_context: user_context = current_user if not email: email = request.form.get("email").strip() if not utils.is_valid_email(email): raise UserWarning("Invalid email address '%s'" % email) else: if email != user_context.email and User.get_by_email(email): raise UserWarning("Email exists already '%s'" % email) elif email != user_context.email: user_context.update(email=email) return True return False
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 contact_page(self): if not self.config_("MAILER_URI") \ or not self.config_("MODULE_CONTACT_PAGE_EMAIL"): abort(500, "Mailer Error. Invalid [ MAILER_URI ] " "or [ MODULE_CONTACT_PAGE_EMAIL ] is missing or empty") contact_email = self.config_("MODULE_CONTACT_PAGE_EMAIL") if request.method == "POST": error_message = None email = request.form.get("email") subject = request.form.get("subject") message = request.form.get("message") name = request.form.get("name") if recaptcha.verify(): if not email or not subject or not message: error_message = "All fields are required" elif not utils.is_valid_email(email): error_message = "Invalid email address" if error_message: flash_error(error_message) else: mailer.send_template("contact-us.txt", to=contact_email, reply_to=email, mail_from=email, mail_subject=subject, mail_message=message, mail_name=name) flash_success("Message sent. Thank you!") else: flash_error("Security code is invalid") return redirect(url_for("ContactPage")) else: self.meta_(title="Contact Us") return dict(view_template_=template_page % "contact_page")
def user_admin_create(self): try: email = request.form.get("email") first_name = request.form.get("first_name") last_name = request.form.get("last_name") user_role = request.form.get("user_role") _role = Role.get(user_role) if not _role: raise ViewError("Invalid role") if current_user.role.level < _role.level: raise ViewError("Can't be assigned a greater user role") if not first_name: raise ViewError("First Name is required") elif not email: raise ViewError("Email is required") elif not utils.is_valid_email(email): raise ViewError("Invalid email address") if User.get_by_email(email): raise ViewError("Email '%s' exists already" % email) else: user = User.new( email=email, first_name=first_name, last_name=last_name, signup_method="email-from-admin", role_id=_role.id, ) if user: flash_success("User created successfully!") return redirect(url_for("UserAdmin:get", id=user.id)) else: raise ViewError("Couldn't create new user") except Exception as ex: flash_error("Error: %s" % ex.message) return redirect(url_for("UserAdmin:index"))
def test_is_valid_email(): assert utils.is_valid_email("youder.com") is False assert utils.is_valid_email("*****@*****.**") is True assert utils.is_valid_email("*****@*****.**") is True assert utils.is_valid_email("*****@*****.**") is True assert utils.is_valid_email("*****@*****.**") is True
def user_admin_post(self): try: id = request.form.get("id") user = User.get(id, include_deleted=True) if not user: flash_error("Can't change user info. Invalid user") return redirect(url_for("UserAdmin:index")) if current_user.role.level < user.role.level: abort(403, "Not enough rights to update this user info") email = request.form.get("email", "").strip() first_name = request.form.get("first_name") last_name = request.form.get("last_name") user_role = request.form.get("user_role") action = request.form.get("action") if user.id != current_user.id: _role = Role.get(user_role) if not _role: raise ViewError("Invalid role") if current_user.role.name.lower() not in PRIVILEDGED_ROLES: raise ViewError("Not Enough right to change user's info") if action == "activate": user.update(active=True) flash_success("User has been ACTIVATED") elif action == "deactivate": user.update(active=False) flash_success("User is now DEACTIVATED") elif action == "delete": user.delete() flash_success("User has been deleted") elif action == "undelete": user.delete(False) flash_success("User is now active") else: if email and email != user.email: if not utils.is_valid_email(email): raise ViewError("Invalid email address '%s'" % email) else: if User.get_by_email(email): raise ViewError("Email exists already '%s'" % email) user.update(email=email) user.update(first_name=first_name, last_name=last_name, role_id=_role.id) else: if email and email != user.email: if not utils.is_valid_email(email): raise ViewError("Invalid email address '%s'" % email) else: if User.get_by_email(email): raise ViewError("Email exists already '%s'" % email) user.update(email=email) user.update(first_name=first_name, last_name=last_name) flash_success("User's Info updated successfully!") except Exception as ex: flash_error("Error: %s " % ex.message) return redirect(url_for("UserAdmin:get", id=id))
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"))