Alec Nikolas Reiter 7 лет назад
Родитель
Сommit
20cafa2eef
3 измененных файлов с 22 добавлено и 16 удалено
  1. 6 4
      flaskbb/auth/services/registration.py
  2. 14 11
      flaskbb/auth/views.py
  3. 2 1
      flaskbb/core/auth/password.py

+ 6 - 4
flaskbb/auth/services/registration.py

@@ -14,10 +14,11 @@ from collections import namedtuple
 from sqlalchemy import func
 
 from ...core.auth.registration import UserRegistrationError, UserValidator
-from ...core.tokens import TokenVerifier, TokenVerificationError
 
-__all__ = ("UsernameRequirements", "UsernameValidator",
-           "EmailUniquenessValidator", "UsernameUniquenessValidator")
+__all__ = (
+    "UsernameRequirements", "UsernameValidator", "EmailUniquenessValidator",
+    "UsernameUniquenessValidator"
+)
 
 UsernameRequirements = namedtuple(
     'UsernameRequirements', ['min', 'max', 'blacklist']
@@ -39,7 +40,8 @@ class UsernameValidator(UserValidator):
                 )
             )
 
-        if user_info.username in self._requirements.blacklist:  # pragma: no branch
+        is_blacklisted = user_info.username in self._requirements.blacklist
+        if is_blacklisted:  # pragma: no branch
             raise UserRegistrationError(
                 'username',
                 '{} is a forbidden username'.format(user_info.username)

+ 14 - 11
flaskbb/auth/views.py

@@ -17,6 +17,7 @@ from flask.views import MethodView
 from flask_babelplus import gettext as _
 from flask_login import (confirm_login, current_user, login_fresh,
                          login_required, login_user, logout_user)
+
 from flaskbb.auth.forms import (AccountActivationForm, ForgotPasswordForm,
                                 LoginForm, LoginRecaptchaForm, ReauthForm,
                                 RegisterForm, RequestActivationForm,
@@ -33,10 +34,10 @@ from flaskbb.utils.helpers import (anonymous_required, enforce_recaptcha,
 from flaskbb.utils.settings import flaskbb_config
 from flaskbb.utils.tokens import get_token_status
 
-from . import services
+from .services import registration
 from ..core.auth.password import ResetPasswordService
 from ..core.auth.registration import (RegistrationService, StopRegistration,
-                                  UserRegistrationInfo)
+                                      UserRegistrationInfo)
 from ..core.tokens import StopTokenVerification, TokenError
 from ..tokens import FlaskBBTokenSerializer
 from ..tokens.verifiers import EmailMatchesUserToken
@@ -365,19 +366,21 @@ def flaskbb_load_blueprints(app):
 
     def registration_service_factory():
         with app.app_context():
-            requirements = services.UsernameRequirements(
+            blacklist = [
+                w.strip()
+                for w in flaskbb_config["AUTH_USERNAME_BLACKLIST"].split(",")
+            ]
+
+            requirements = registration.UsernameRequirements(
                 min=flaskbb_config["AUTH_USERNAME_MIN_LENGTH"],
                 max=flaskbb_config["AUTH_USERNAME_MAX_LENGTH"],
-                blacklist=[
-                    w.strip()
-                    for w in flaskbb_config["AUTH_USERNAME_BLACKLIST"].split(",")
-                ]
+                blacklist=blacklist
             )
 
         validators = [
-            services.EmailUniquenessValidator(User),
-            services.UsernameUniquenessValidator(User),
-            services.UsernameValidator(requirements)
+            registration.EmailUniquenessValidator(User),
+            registration.UsernameUniquenessValidator(User),
+            registration.UsernameValidator(requirements)
         ]
 
         return RegistrationService(validators, UserRepository(db))
@@ -395,7 +398,7 @@ def flaskbb_load_blueprints(app):
         routes=['/register'],
         view_func=Register.as_view(
             'register',
-            registration_service=registration_service_factory
+            registration_service_factory=registration_service_factory
         )
     )
     register_view(

+ 2 - 1
flaskbb/core/auth/password.py

@@ -9,11 +9,12 @@
     :license: BSD, see LICENSE for more details
 """
 
-from ..tokens import (StopTokenVerification, Token, TokenActions, TokenError,
+from ..tokens import (StopTokenVerification, TokenActions, TokenError,
                       TokenVerificationError)
 
 
 class ResetPasswordService(object):
+
     def __init__(self, token_serializer, users, token_verifiers):
         self.token_serializer = token_serializer
         self.users = users