Browse Source

Refactor how auth handlers are processed

Alec Nikolas Reiter 7 years ago
parent
commit
16c43df1a5
1 changed files with 15 additions and 7 deletions
  1. 15 7
      flaskbb/auth/plugins.py

+ 15 - 7
flaskbb/auth/plugins.py

@@ -9,9 +9,10 @@
 """
 """
 from flask import flash, redirect, url_for
 from flask import flash, redirect, url_for
 from flask_login import current_user, logout_user
 from flask_login import current_user, logout_user
-from ..extensions import db
+
 from . import impl
 from . import impl
 from ..core.auth.authentication import ForceLogout
 from ..core.auth.authentication import ForceLogout
+from ..extensions import db
 from ..user.models import User
 from ..user.models import User
 from ..utils.settings import flaskbb_config
 from ..utils.settings import flaskbb_config
 from .services.authentication import (
 from .services.authentication import (
@@ -44,9 +45,13 @@ def flaskbb_authenticate(identifier, secret):
 
 
 @impl(tryfirst=True)
 @impl(tryfirst=True)
 def flaskbb_post_authenticate(user):
 def flaskbb_post_authenticate(user):
-    ClearFailedLogins().handle_post_auth(user)
+    handlers = [ClearFailedLogins()]
+
     if flaskbb_config["ACTIVATE_ACCOUNT"]:
     if flaskbb_config["ACTIVATE_ACCOUNT"]:
-        BlockUnactivatedUser().handle_post_auth(user)
+        handlers.append(BlockUnactivatedUser())
+
+    for handler in handlers:
+        handler.handle_post_auth(user)
 
 
 
 
 @impl
 @impl
@@ -102,10 +107,13 @@ def flaskbb_gather_registration_validators():
 
 
 @impl
 @impl
 def flaskbb_registration_post_processor(user):
 def flaskbb_registration_post_processor(user):
+    handlers = []
+
     if flaskbb_config["ACTIVATE_ACCOUNT"]:
     if flaskbb_config["ACTIVATE_ACCOUNT"]:
-        service = SendActivationPostProcessor(account_activator_factory())
+        handlers.append(SendActivationPostProcessor(account_activator_factory))
     else:
     else:
-        service = AutologinPostProcessor()
+        handlers.append(AutologinPostProcessor())
+        handlers.append(AutoActivateUserPostProcessor(db, flaskbb_config))
 
 
-    service.post_process(user)
-    AutoActivateUserPostProcessor(db, flaskbb_config).post_process(user)
+    for handler in handlers:
+        handler.post_process(user)