Browse Source

Fix login if recaptcha is enabled but not login captcha

This happens because the RecaptchaField just checks RECAPTCHA_ENABLED
and not login_enabled
Peter Justin 8 years ago
parent
commit
6d41a1dab1
2 changed files with 12 additions and 6 deletions
  1. 4 2
      flaskbb/auth/forms.py
  2. 8 4
      flaskbb/auth/views.py

+ 4 - 2
flaskbb/auth/forms.py

@@ -32,13 +32,15 @@ class LoginForm(FlaskForm):
     password = PasswordField(_("Password"), validators=[
     password = PasswordField(_("Password"), validators=[
         DataRequired(message=_("Please enter your password."))])
         DataRequired(message=_("Please enter your password."))])
 
 
-    recaptcha = RecaptchaField(_("Captcha"))
-
     remember_me = BooleanField(_("Remember me"), default=False)
     remember_me = BooleanField(_("Remember me"), default=False)
 
 
     submit = SubmitField(_("Login"))
     submit = SubmitField(_("Login"))
 
 
 
 
+class LoginRecaptchaForm(LoginForm):
+    recaptcha = RecaptchaField(_("Captcha"))
+
+
 class RegisterForm(FlaskForm):
 class RegisterForm(FlaskForm):
     username = StringField(_("Username"), validators=[
     username = StringField(_("Username"), validators=[
         DataRequired(message=_("A valid username is required.")),
         DataRequired(message=_("A valid username is required.")),

+ 8 - 4
flaskbb/auth/views.py

@@ -21,9 +21,10 @@ from flaskbb.utils.helpers import (render_template, redirect_or_next,
                                    format_timedelta)
                                    format_timedelta)
 from flaskbb.email import send_reset_token, send_activation_token
 from flaskbb.email import send_reset_token, send_activation_token
 from flaskbb.exceptions import AuthenticationError
 from flaskbb.exceptions import AuthenticationError
-from flaskbb.auth.forms import (LoginForm, ReauthForm, ForgotPasswordForm,
-                                ResetPasswordForm, RegisterForm,
-                                AccountActivationForm, RequestActivationForm)
+from flaskbb.auth.forms import (LoginForm, LoginRecaptchaForm, ReauthForm,
+                                ForgotPasswordForm, ResetPasswordForm,
+                                RegisterForm, AccountActivationForm,
+                                RequestActivationForm)
 from flaskbb.user.models import User
 from flaskbb.user.models import User
 from flaskbb.fixtures.settings import available_languages
 from flaskbb.fixtures.settings import available_languages
 from flaskbb.utils.settings import flaskbb_config
 from flaskbb.utils.settings import flaskbb_config
@@ -85,7 +86,10 @@ def login():
         stats_diff = flaskbb_config["AUTH_REQUESTS"] - window_stats[1]
         stats_diff = flaskbb_config["AUTH_REQUESTS"] - window_stats[1]
         login_recaptcha = stats_diff >= flaskbb_config["LOGIN_RECAPTCHA"]
         login_recaptcha = stats_diff >= flaskbb_config["LOGIN_RECAPTCHA"]
 
 
-    form = LoginForm(request.form)
+    form = LoginForm()
+    if login_recaptcha and flaskbb_config["RECAPTCHA_ENABLED"]:
+        form = LoginRecaptchaForm()
+
     if form.validate_on_submit():
     if form.validate_on_submit():
         try:
         try:
             user = User.authenticate(form.login.data, form.password.data)
             user = User.authenticate(form.login.data, form.password.data)