diff --git a/app/blueprints/users/account.py b/app/blueprints/users/account.py
index 780a6a72..2841bdf4 100644
--- a/app/blueprints/users/account.py
+++ b/app/blueprints/users/account.py
@@ -102,14 +102,19 @@ def logout():
class RegisterForm(FlaskForm):
display_name = StringField("Display Name", [Optional(), Length(1, 20)], filters=[lambda x: nonEmptyOrNone(x)])
username = StringField("Username", [InputRequired(),
- Regexp("^[a-zA-Z0-9._-]+$", message="Only a-zA-Z0-9._ allowed")])
- email = StringField("Email", [InputRequired(), Email()])
+ Regexp("^[a-zA-Z0-9._-]+$", message="Only a-zA-Z0-9._ allowed")])
+ email = StringField("Email", [InputRequired(), Email()])
password = PasswordField("Password", [InputRequired(), Length(6, 100)])
- agree = BooleanField("I agree", [Required()])
- submit = SubmitField("Register")
+ question = StringField("What is the result of the above calculation?", [InputRequired()])
+ agree = BooleanField("I agree", [DataRequired()])
+ submit = SubmitField("Register")
def handle_register(form):
+ if form.question.data.strip().lower() != "19":
+ flash("Incorrect captcha answer", "danger")
+ return
+
user_by_name = User.query.filter(or_(
User.username == form.username.data,
User.username == form.display_name.data,
@@ -168,7 +173,8 @@ def register():
if ret:
return ret
- return render_template("users/register.html", form=form, suggested_password=genphrase(entropy=52, wordset="bip39"))
+ return render_template("users/register.html", form=form,
+ suggested_password=genphrase(entropy=52, wordset="bip39"))
class ForgotPasswordForm(FlaskForm):
diff --git a/app/public/static/puzzle.png b/app/public/static/puzzle.png
new file mode 100644
index 00000000..ea9fe0ec
Binary files /dev/null and b/app/public/static/puzzle.png differ
diff --git a/app/templates/users/register.html b/app/templates/users/register.html
index 82657c1f..31696c53 100644
--- a/app/templates/users/register.html
+++ b/app/templates/users/register.html
@@ -32,6 +32,11 @@ Register
{{ suggested_password }}
+
+