mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-06-04 11:24:00 +08:00
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
import importlib
|
|
|
|
from api.hook.common.parameters import SignatureParameters, AuthenticationParameters, \
|
|
SignatureReturn, AuthenticationReturn, PermissionReturn, ClientAuthenticationReturn, ClientAuthenticationParameters
|
|
from api.settings import HOOK_MODULE, stat_logger,RetCode
|
|
|
|
|
|
class HookManager:
|
|
SITE_SIGNATURE = []
|
|
SITE_AUTHENTICATION = []
|
|
CLIENT_AUTHENTICATION = []
|
|
PERMISSION_CHECK = []
|
|
|
|
@staticmethod
|
|
def init():
|
|
if HOOK_MODULE is not None:
|
|
for modules in HOOK_MODULE.values():
|
|
for module in modules.split(";"):
|
|
try:
|
|
importlib.import_module(module)
|
|
except Exception as e:
|
|
stat_logger.exception(e)
|
|
|
|
@staticmethod
|
|
def register_site_signature_hook(func):
|
|
HookManager.SITE_SIGNATURE.append(func)
|
|
|
|
@staticmethod
|
|
def register_site_authentication_hook(func):
|
|
HookManager.SITE_AUTHENTICATION.append(func)
|
|
|
|
@staticmethod
|
|
def register_client_authentication_hook(func):
|
|
HookManager.CLIENT_AUTHENTICATION.append(func)
|
|
|
|
@staticmethod
|
|
def register_permission_check_hook(func):
|
|
HookManager.PERMISSION_CHECK.append(func)
|
|
|
|
@staticmethod
|
|
def client_authentication(parm: ClientAuthenticationParameters) -> ClientAuthenticationReturn:
|
|
if HookManager.CLIENT_AUTHENTICATION:
|
|
return HookManager.CLIENT_AUTHENTICATION[0](parm)
|
|
return ClientAuthenticationReturn()
|
|
|
|
@staticmethod
|
|
def site_signature(parm: SignatureParameters) -> SignatureReturn:
|
|
if HookManager.SITE_SIGNATURE:
|
|
return HookManager.SITE_SIGNATURE[0](parm)
|
|
return SignatureReturn()
|
|
|
|
@staticmethod
|
|
def site_authentication(parm: AuthenticationParameters) -> AuthenticationReturn:
|
|
if HookManager.SITE_AUTHENTICATION:
|
|
return HookManager.SITE_AUTHENTICATION[0](parm)
|
|
return AuthenticationReturn()
|
|
|