Added feature flag for basic auth stuff #440

This commit is contained in:
2023-11-19 14:01:26 +01:00
parent c8d3bf780d
commit 4ccb57e6a3
13 changed files with 115 additions and 28 deletions

View File

@@ -50,4 +50,6 @@ type Query {
technicianConfig: TechnicianConfig
possibleFeatureFlags: [String]
discord: Discord
hasFeatureFlag(flag: String): FeatureFlag
}

View File

@@ -1,7 +1,9 @@
from cpl_core.configuration import ConfigurationABC
from cpl_discord.service import DiscordBotServiceABC
from cpl_query.extension import List
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
from bot_data.abc.client_repository_abc import ClientRepositoryABC
@@ -22,6 +24,7 @@ from bot_data.abc.user_joined_voice_channel_repository_abc import (
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.abc.user_warnings_repository_abc import UserWarningsRepositoryABC
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
from bot_data.model.technician_config import TechnicianConfig
from bot_graphql.abc.query_abc import QueryABC
from bot_graphql.filter.achievement_filter import AchievementFilter
from bot_graphql.filter.auto_role_filter import AutoRoleFilter
@@ -45,6 +48,7 @@ from modules.achievements.achievement_service import AchievementService
class Query(QueryABC):
def __init__(
self,
config: ConfigurationABC,
bot: DiscordBotServiceABC,
auto_roles: AutoRoleRepositoryABC,
clients: ClientRepositoryABC,
@@ -65,6 +69,8 @@ class Query(QueryABC):
):
QueryABC.__init__(self, "Query")
self._config = config
self.add_collection("autoRole", lambda *_: auto_roles.get_auto_roles(), AutoRoleFilter)
self.add_collection(
"autoRoleRule",
@@ -120,3 +126,17 @@ class Query(QueryABC):
self.set_field("possibleFeatureFlags", lambda *_: [e.value for e in FeatureFlagsEnum])
self.set_field("discord", lambda *_: Discord(bot.guilds, List(any).extend(bot.users)))
self.set_field(
"hasFeatureFlag",
lambda *_, **kwargs: self._resolve_has_feature_flag(*_, **kwargs),
)
def _resolve_has_feature_flag(self, *_, **kwargs):
settings: TechnicianConfig = self._config.get_configuration(TechnicianConfig)
if "flag" not in kwargs:
return False
return {
"key": kwargs["flag"],
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(kwargs["flag"])),
}