|
@@ -53,14 +53,16 @@ def check_rate_limiting():
|
|
|
def login_rate_limit_error(error):
|
|
|
"""Register a custom error handler for a 'Too Many Requests'
|
|
|
(HTTP CODE 429) error."""
|
|
|
- return render_template("errors/too_many_logins.html", timeout=error.description)
|
|
|
+ return render_template("errors/too_many_logins.html",
|
|
|
+ timeout=error.description)
|
|
|
|
|
|
|
|
|
def login_rate_limit():
|
|
|
"""Dynamically load the rate limiting config from the database."""
|
|
|
# [count] [per|/] [n (optional)] [second|minute|hour|day|month|year]
|
|
|
return "{count}/{timeout}minutes".format(
|
|
|
- count=flaskbb_config["AUTH_REQUESTS"], timeout=flaskbb_config["AUTH_TIMEOUT"]
|
|
|
+ count=flaskbb_config["AUTH_REQUESTS"],
|
|
|
+ timeout=flaskbb_config["AUTH_TIMEOUT"]
|
|
|
)
|
|
|
|
|
|
|
|
@@ -105,13 +107,9 @@ class Login(MethodView):
|
|
|
try:
|
|
|
user = User.authenticate(form.login.data, form.password.data)
|
|
|
if not login_user(user, remember=form.remember_me.data):
|
|
|
- flash(
|
|
|
- _(
|
|
|
- "In order to use your account you have to activate it "
|
|
|
- "through the link we have sent to your email "
|
|
|
- "address."
|
|
|
- ), "danger"
|
|
|
- )
|
|
|
+ flash(_("In order to use your account you have to "
|
|
|
+ "activate it through the link we have sent to "
|
|
|
+ "your email address."), "danger")
|
|
|
return redirect_or_next(url_for("forum.index"))
|
|
|
except AuthenticationError:
|
|
|
flash(_("Wrong username or password."), "danger")
|
|
@@ -162,16 +160,16 @@ class Register(MethodView):
|
|
|
if flaskbb_config["ACTIVATE_ACCOUNT"]:
|
|
|
# Any call to an expired model requires a database hit, so
|
|
|
# accessing user.id would cause an DetachedInstanceError.
|
|
|
- # This happens because the `user`'s session does no longer exist.
|
|
|
- # So we just fire up another query to make sure that the session
|
|
|
- # for the newly created user is fresh.
|
|
|
+ # This happens because the `user`'s session does no longer
|
|
|
+ # exist. So we just fire up another query to make sure that
|
|
|
+ # the session for the newly created user is fresh.
|
|
|
# PS: `db.session.merge(user)` did not work for me.
|
|
|
user = User.query.filter_by(email=user.email).first()
|
|
|
- send_activation_token.delay(user)
|
|
|
- flash(
|
|
|
- _("An account activation email has been sent to %(email)s", email=user.email),
|
|
|
- "success"
|
|
|
+ send_activation_token.delay(
|
|
|
+ user_id=user.id, username=user.username, email=user.email
|
|
|
)
|
|
|
+ flash(_("An account activation email has been sent to "
|
|
|
+ "%(email)s", email=user.email), "success")
|
|
|
else:
|
|
|
login_user(user)
|
|
|
flash(_("Thanks for registering."), "success")
|
|
@@ -194,16 +192,14 @@ class ForgotPassword(MethodView):
|
|
|
user = User.query.filter_by(email=form.email.data).first()
|
|
|
|
|
|
if user:
|
|
|
- send_reset_token.delay(user)
|
|
|
+ send_reset_token.delay(
|
|
|
+ user_id=user.id, username=user.username, email=user.email
|
|
|
+ )
|
|
|
flash(_("Email sent! Please check your inbox."), "info")
|
|
|
return redirect(url_for("auth.forgot_password"))
|
|
|
else:
|
|
|
- flash(
|
|
|
- _(
|
|
|
- "You have entered an username or email address that is "
|
|
|
- "not linked with your account."
|
|
|
- ), "danger"
|
|
|
- )
|
|
|
+ flash(_("You have entered an username or email address that "
|
|
|
+ "is not linked with your account."), "danger")
|
|
|
return render_template("auth/forgot_password.html", form=form)
|
|
|
|
|
|
|
|
@@ -219,7 +215,9 @@ class ResetPassword(MethodView):
|
|
|
def post(self, token):
|
|
|
form = self.form()
|
|
|
if form.validate_on_submit():
|
|
|
- expired, invalid, user = get_token_status(form.token.data, "reset_password")
|
|
|
+ expired, invalid, user = get_token_status(
|
|
|
+ form.token.data, "reset_password"
|
|
|
+ )
|
|
|
|
|
|
if invalid:
|
|
|
flash(_("Your password token is invalid."), "danger")
|
|
@@ -244,20 +242,24 @@ class RequestActivationToken(MethodView):
|
|
|
form = RequestActivationForm
|
|
|
|
|
|
def get(self):
|
|
|
- return render_template("auth/request_account_activation.html", form=self.form())
|
|
|
+ return render_template("auth/request_account_activation.html",
|
|
|
+ form=self.form())
|
|
|
|
|
|
def post(self):
|
|
|
form = self.form()
|
|
|
if form.validate_on_submit():
|
|
|
user = User.query.filter_by(email=form.email.data).first()
|
|
|
- send_activation_token.delay(user)
|
|
|
+ send_activation_token.delay(
|
|
|
+ user_id=user.id, username=user.username, email=user.email
|
|
|
+ )
|
|
|
flash(
|
|
|
_("A new account activation token has been sent to "
|
|
|
"your email address."), "success"
|
|
|
)
|
|
|
return redirect(url_for("auth.activate_account"))
|
|
|
|
|
|
- return render_template("auth/request_account_activation.html", form=form)
|
|
|
+ return render_template("auth/request_account_activation.html",
|
|
|
+ form=form)
|
|
|
|
|
|
|
|
|
class ActivateAccount(MethodView):
|
|
@@ -267,7 +269,9 @@ class ActivateAccount(MethodView):
|
|
|
def get(self, token=None):
|
|
|
expired = invalid = user = None
|
|
|
if token is not None:
|
|
|
- expired, invalid, user = get_token_status(token, "activate_account")
|
|
|
+ expired, invalid, user = get_token_status(
|
|
|
+ token, "activate_account"
|
|
|
+ )
|
|
|
|
|
|
if invalid:
|
|
|
flash(_("Your account activation token is invalid."), "danger")
|
|
@@ -288,17 +292,23 @@ class ActivateAccount(MethodView):
|
|
|
flash(_("Your account has been activated."), "success")
|
|
|
return redirect(url_for("forum.index"))
|
|
|
|
|
|
- return render_template("auth/account_activation.html", form=self.form())
|
|
|
+ return render_template(
|
|
|
+ "auth/account_activation.html", form=self.form()
|
|
|
+ )
|
|
|
|
|
|
def post(self, token=None):
|
|
|
expired = invalid = user = None
|
|
|
form = self.form()
|
|
|
|
|
|
if token is not None:
|
|
|
- expired, invalid, user = get_token_status(token, "activate_account")
|
|
|
+ expired, invalid, user = get_token_status(
|
|
|
+ token, "activate_account"
|
|
|
+ )
|
|
|
|
|
|
elif form.validate_on_submit():
|
|
|
- expired, invalid, user = get_token_status(form.token.data, "activate_account")
|
|
|
+ expired, invalid, user = get_token_status(
|
|
|
+ form.token.data, "activate_account"
|
|
|
+ )
|
|
|
|
|
|
if invalid:
|
|
|
flash(_("Your account activation token is invalid."), "danger")
|
|
@@ -325,19 +335,26 @@ class ActivateAccount(MethodView):
|
|
|
register_view(auth, routes=['/logout'], view_func=Logout.as_view('logout'))
|
|
|
register_view(auth, routes=['/login'], view_func=Login.as_view('login'))
|
|
|
register_view(auth, routes=['/reauth'], view_func=Reauth.as_view('reauth'))
|
|
|
-register_view(auth, routes=['/register'], view_func=Register.as_view('register'))
|
|
|
register_view(
|
|
|
- auth, routes=['/reset-password'], view_func=ForgotPassword.as_view('forgot_password')
|
|
|
+ auth,
|
|
|
+ routes=['/register'],
|
|
|
+ view_func=Register.as_view('register')
|
|
|
+)
|
|
|
+register_view(
|
|
|
+ auth,
|
|
|
+ routes=['/reset-password'],
|
|
|
+ view_func=ForgotPassword.as_view('forgot_password')
|
|
|
)
|
|
|
register_view(
|
|
|
- auth, routes=['/reset-password/<token>'], view_func=ResetPassword.as_view('reset_password')
|
|
|
+ auth,
|
|
|
+ routes=['/reset-password/<token>'],
|
|
|
+ view_func=ResetPassword.as_view('reset_password')
|
|
|
)
|
|
|
register_view(
|
|
|
auth,
|
|
|
routes=['/activate'],
|
|
|
view_func=RequestActivationToken.as_view('request_activation_token')
|
|
|
)
|
|
|
-
|
|
|
register_view(
|
|
|
auth,
|
|
|
routes=['/activate/confirm', '/activate/confirm/<token>'],
|