Added maintenance mode #423
All checks were successful
Deploy dev on push / on-push-deploy_sh-edraft (push) Successful in 4m9s

This commit is contained in:
2023-11-05 22:22:39 +01:00
parent 2f161d2f43
commit a7c833b9db
36 changed files with 106 additions and 37 deletions

View File

@@ -1,6 +1,7 @@
from typing import Callable
from ariadne import ObjectType
from cpl_core.configuration import ConfigurationABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_core.type import T
from cpl_discord.service import DiscordBotServiceABC
@@ -75,9 +76,14 @@ class QueryABC(ObjectType):
def get_services(services: ServiceProviderABC) -> ServiceProviderABC:
return services
@ServiceProviderABC.inject
def get_config(config: ConfigurationABC) -> ConfigurationABC:
return config
services = get_services()
permissions: PermissionService = services.get_service(PermissionService)
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
config = get_config()
if user.auth_role == AuthRoleEnum.admin:
return True
@@ -87,6 +93,9 @@ class QueryABC(ObjectType):
if permissions.is_member_technician(guild.get_member(u.discord_id)):
return True
if config.get_configuration("MAINTENANCE"):
return False
access = False
if type(element) == Achievement:
element: Achievement = element
@@ -215,7 +224,9 @@ class QueryABC(ObjectType):
return access
@ServiceProviderABC.inject
def _can_user_mutate_data(self, server: Server, permission: UserRoleEnum, services: ServiceProviderABC):
def _can_user_mutate_data(
self, server: Server, permission: UserRoleEnum, services: ServiceProviderABC, config: ConfigurationABC
):
permissions: PermissionService = services.get_service(PermissionService)
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
@@ -227,16 +238,20 @@ class QueryABC(ObjectType):
auth_user.users.where(lambda x: x.server.id == server.id).single().discord_id
)
check_perm = lambda x: True
can_edit = lambda x: False
match permission:
case UserRoleEnum.moderator:
check_perm = lambda x: permissions.is_member_moderator(x)
can_edit = permissions.is_member_moderator
if config.get_configuration("MAINTENANCE"):
can_edit = lambda x: False
case UserRoleEnum.admin:
check_perm = lambda x: permissions.is_member_admin(x)
can_edit = permissions.is_member_admin
if config.get_configuration("MAINTENANCE"):
can_edit = lambda x: False
case UserRoleEnum.technician:
check_perm = lambda x: permissions.is_member_technician(x)
can_edit = permissions.is_member_technician
if not check_perm(member):
if not can_edit(member):
ex = ServiceException(ServiceErrorCode.Forbidden, f"User not allowed to mutate data")
raise ex