Added maintenance mode #423
All checks were successful
Deploy dev on push / on-push-deploy_sh-edraft (push) Successful in 4m9s
All checks were successful
Deploy dev on push / on-push-deploy_sh-edraft (push) Successful in 4m9s
This commit is contained in:
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user