From 7753c95906b0d8d026053780354c44ae57f2af2b Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Wed, 28 Apr 2021 18:43:30 +0200 Subject: [PATCH] Fixed permissions --- server/src/client/command_handler/client.cpp | 8 ++++---- server/src/client/command_handler/misc.cpp | 5 +++-- server/src/client/command_handler/server.cpp | 4 ++-- server/src/music/PlaylistPermissions.cpp | 5 ++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/server/src/client/command_handler/client.cpp b/server/src/client/command_handler/client.cpp index a3ad850..0528f3a 100644 --- a/server/src/client/command_handler/client.cpp +++ b/server/src/client/command_handler/client.cpp @@ -83,13 +83,13 @@ command_result ConnectedClient::handleCommandClientKick(Command &cmd) { } if(type == ViewReasonId::VREASON_CHANNEL_KICK) { - auto kick_power = this->calculate_permission(permission::i_client_kick_from_channel_power, client->getChannelId()); + auto kick_power = this->calculate_permission(permission::i_client_kick_from_channel_power, client->getChannelId()).zero_if_unset(); if(!permission::v2::permission_granted(client->calculate_permission(permission::i_client_needed_kick_from_channel_power, client->getChannelId()), kick_power)) { result.emplace_result(permission::i_client_needed_kick_from_channel_power); continue; } } else { - auto kick_power = this->calculate_permission(permission::i_client_kick_from_server_power, client->getChannelId()); + auto kick_power = this->calculate_permission(permission::i_client_kick_from_server_power, client->getChannelId()).zero_if_unset(); if(!permission::v2::permission_granted(client->calculate_permission(permission::i_client_needed_kick_from_server_power, client->getChannelId()), kick_power)) { result.emplace_result(permission::i_client_needed_kick_from_server_power); continue; @@ -221,11 +221,11 @@ command_result ConnectedClient::handleCommandClientMove(Command &cmd) { } if(target_client.client != this) { - if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, target_client->getChannelId()), this->calculate_permission(permission::i_client_move_power, target_client->getChannelId()))) { + if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, target_client->getChannelId()).zero_if_unset(), this->calculate_permission(permission::i_client_move_power, target_client->getChannelId()))) { result.emplace_result(permission::i_client_move_power); continue; } - if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, target_channel->channelId()), this->calculate_permission(permission::i_client_move_power, target_channel->channelId()))) { + if(!permission::v2::permission_granted(target_client->calculate_permission(permission::i_client_needed_move_power, target_channel->channelId()).zero_if_unset(), this->calculate_permission(permission::i_client_move_power, target_channel->channelId()))) { result.emplace_result(permission::i_client_move_power); continue; } diff --git a/server/src/client/command_handler/misc.cpp b/server/src/client/command_handler/misc.cpp index 109515e..dfeed2c 100644 --- a/server/src/client/command_handler/misc.cpp +++ b/server/src/client/command_handler/misc.cpp @@ -489,7 +489,8 @@ command_result ConnectedClient::handleCommandSetClientChannelGroup(Command &cmd) auto client_permission_modify_power = this->calculate_permission(permission::i_client_permission_modify_power, channel_id); auto client_needed_permission_modify_power = this->server->calculate_permission( - permission::i_client_needed_permission_modify_power, target_cldbid, ClientType::CLIENT_TEAMSPEAK, channel_id); + permission::i_client_needed_permission_modify_power, target_cldbid, ClientType::CLIENT_TEAMSPEAK, channel_id + ).zero_if_unset(); if(client_needed_permission_modify_power.has_value) { @@ -908,7 +909,7 @@ command_result ConnectedClient::handleCommandBanClient(Command &cmd) { if(!target_database_id) target_database_id = target_clients.back()->getClientDatabaseId(); } - if(!permission::v2::permission_granted(this->server->calculate_permission(permission::i_client_needed_ban_power, target_database_id, ClientType::CLIENT_TEAMSPEAK, 0), this->calculate_permission(permission::i_client_ban_power, 0))) + if(!permission::v2::permission_granted(this->server->calculate_permission(permission::i_client_needed_ban_power, target_database_id, ClientType::CLIENT_TEAMSPEAK, 0).zero_if_unset(), this->calculate_permission(permission::i_client_ban_power, 0))) return command_result{permission::i_client_ban_power}; if (permission::v2::permission_granted(1, this->server->calculate_permission(permission::b_client_ignore_bans, target_database_id, ClientType::CLIENT_TEAMSPEAK, 0))) diff --git a/server/src/client/command_handler/server.cpp b/server/src/client/command_handler/server.cpp index c678a66..b069c45 100644 --- a/server/src/client/command_handler/server.cpp +++ b/server/src/client/command_handler/server.cpp @@ -403,7 +403,7 @@ command_result ConnectedClient::handleCommandServerGroupAddClient(Command &cmd) } ClientPermissionCalculator client_permissions{target_server, target_cldbid, ClientType::CLIENT_TEAMSPEAK, 0}; - if(!permission::v2::permission_granted(client_permissions.calculate_permission(permission::i_client_needed_permission_modify_power), this->calculate_permission(permission::i_client_permission_modify_power, 0))) { + if(!permission::v2::permission_granted(client_permissions.calculate_permission(permission::i_client_needed_permission_modify_power).zero_if_unset(), this->calculate_permission(permission::i_client_permission_modify_power, 0))) { return command_result{permission::i_client_needed_permission_modify_power}; } @@ -527,7 +527,7 @@ command_result ConnectedClient::handleCommandServerGroupDelClient(Command &cmd) } ClientPermissionCalculator client_permissions{target_server, target_cldbid, ClientType::CLIENT_TEAMSPEAK, 0}; - if(!permission::v2::permission_granted(client_permissions.calculate_permission(permission::i_client_needed_permission_modify_power), this->calculate_permission(permission::i_client_permission_modify_power, 0))) { + if(!permission::v2::permission_granted(client_permissions.calculate_permission(permission::i_client_needed_permission_modify_power).zero_if_unset(), this->calculate_permission(permission::i_client_permission_modify_power, 0))) { return command_result{permission::i_client_needed_permission_modify_power}; } diff --git a/server/src/music/PlaylistPermissions.cpp b/server/src/music/PlaylistPermissions.cpp index 33b906d..d43974f 100644 --- a/server/src/music/PlaylistPermissions.cpp +++ b/server/src/music/PlaylistPermissions.cpp @@ -34,9 +34,8 @@ permission::PermissionType PlaylistPermissions::client_has_permissions( if((flags & do_no_require_granted) == 0) { playlist_permission.clear_flag_on_zero(); - } else if(!playlist_permission.has_value) { - playlist_permission.value = 0; - playlist_permission.has_value = true; + } else { + playlist_permission.zero_if_unset(); } return permission::v2::permission_granted(playlist_permission, client_permission) ? permission::ok : granted_permission;