Source code for univention.management.console.modules.passwordreset.sending

# SPDX-FileCopyrightText: 2024-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

import importlib
import inspect
import os

from univention.management.console.modules.passwordreset.send_plugin import UniventionSelfServiceTokenEmitter


[docs] def get_plugins(log): plugins = {} def find_plugins(): _plugins = [] _dir = os.path.dirname(__file__) for _file in os.listdir(_dir): if _file.endswith(".py") and _file != "__init__.py" and os.path.isfile(os.path.join(_dir, _file)): _plugins.append(_file[:-3]) return _plugins def load_plugin(_module): res = importlib.import_module(f'univention.management.console.modules.passwordreset.sending.{_module}') for possible_plugin_class in inspect.getmembers(res, lambda m: inspect.isclass(m) and m is not UniventionSelfServiceTokenEmitter and issubclass(m, UniventionSelfServiceTokenEmitter)): return possible_plugin_class[1] return None for _plugin in find_plugins(): plugin_class = load_plugin(_plugin) if plugin_class: if plugin_class.is_enabled(): log(f"get_plugins(): Loaded sending plugin class '{plugin_class.__name__}' for sending method '{plugin_class.send_method()}'.") plugins[plugin_class.send_method()] = plugin_class(log) else: log(f"get_plugins(): Plugin class '{plugin_class.__name__}' for sending method '{plugin_class.send_method()}' is disabled.") for plugin in plugins.values(): log(f"get_plugins(): plugin class '{plugin.__class__.__name__}' for sending method '{plugin.send_method()}': udm_property: '{plugin.udm_property}' token_length: '{plugin.token_length}'") return plugins