From c299bf6f7c08300292514f6cec5bfb7aafe5ab44 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:37:48 +0800 Subject: [PATCH] fix(auth): adjust auth to occur before module init --- app/api/endpoints/site.py | 3 +++ app/scheduler.py | 3 --- app/startup/modules_initializer.py | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/api/endpoints/site.py b/app/api/endpoints/site.py index 3c3bf1b7..8837a827 100644 --- a/app/api/endpoints/site.py +++ b/app/api/endpoints/site.py @@ -8,6 +8,7 @@ from app import schemas from app.chain.site import SiteChain from app.chain.torrents import TorrentsChain from app.core.event import EventManager +from app.core.plugin import PluginManager from app.core.security import verify_token from app.db import get_db from app.db.models import User @@ -351,6 +352,8 @@ def auth_site( return schemas.Response(success=False, message="请输入认证站点和认证参数") status, msg = SitesHelper().check_user(auth_info.site, auth_info.params) SystemConfigOper().set(SystemConfigKey.UserSiteAuthParams, auth_info.dict()) + PluginManager().init_config() + Scheduler().init_plugin_jobs() return schemas.Response(success=status, message=msg) diff --git a/app/scheduler.py b/app/scheduler.py index e66e7dd9..73e11c95 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -174,9 +174,6 @@ class Scheduler(metaclass=Singleton): # 停止定时服务 self.stop() - # 用户认证立即执行一次 - user_auth() - # 调试模式不启动定时服务 if settings.DEV: return diff --git a/app/startup/modules_initializer.py b/app/startup/modules_initializer.py index 624423b4..30c62c50 100644 --- a/app/startup/modules_initializer.py +++ b/app/startup/modules_initializer.py @@ -23,7 +23,9 @@ from app.helper.message import MessageHelper from app.scheduler import Scheduler from app.monitor import Monitor from app.schemas import Notification, NotificationType +from app.schemas.types import SystemConfigKey from app.db import close_database +from app.db.systemconfig_oper import SystemConfigOper from app.chain.command import CommandChain @@ -72,6 +74,19 @@ def clear_temp(): SystemUtils.clear(settings.CACHE_PATH / "images", days=7) +def user_auth(): + """ + 用户认证检查 + """ + if SitesHelper().auth_level >= 2: + return + auth_conf = SystemConfigOper().get(SystemConfigKey.UserSiteAuthParams) + if auth_conf: + SitesHelper().check_user(**auth_conf) + else: + SitesHelper().check_user() + + def check_auth(): """ 检查认证状态 @@ -128,6 +143,8 @@ def start_modules(_: FastAPI): SitesHelper() # 资源包检测 ResourceHelper() + # 用户认证 + user_auth() # 加载模块 ModuleManager() # 启动事件消费