From 9a6ffb0b5f2ca5942624bf40752fab3a44b0cceb Mon Sep 17 00:00:00 2001 From: allerria Date: Wed, 3 Feb 2021 12:32:50 +0300 Subject: [PATCH 1/2] add ban check on_transfer --- .../tests/win_raise_lose_tests.cpp | 36 +++++++++++++++++++ sdk/include/game-contract-sdk/game_base.hpp | 8 +++++ sdk/libs/platform-contracts | 2 +- tester/CMakeLists.txt | 2 +- 4 files changed, 46 insertions(+), 2 deletions(-) diff --git a/examples/win_raise_lose/tests/win_raise_lose_tests.cpp b/examples/win_raise_lose/tests/win_raise_lose_tests.cpp index 0098171..26b51df 100644 --- a/examples/win_raise_lose/tests/win_raise_lose_tests.cpp +++ b/examples/win_raise_lose/tests/win_raise_lose_tests.cpp @@ -298,6 +298,42 @@ BOOST_FIXTURE_TEST_CASE(game_params_test, win_raise_lose_tester) try { } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE(ban_test, win_raise_lose_tester) try { + const name player_name = N(player); + + create_player(player_name); + link_game(player_name, game_name); + + transfer(N(eosio), player_name, ASSET("15.00000 KEK")); + transfer(N(eosio), casino_name, ASSET("1000.00000 KEK")); + + BOOST_REQUIRE_EQUAL( + success(), + transfer(player_name, game_name, ASSET("5.00000 KEK"), "0") + ); + + BOOST_REQUIRE_EQUAL( + success(), + push_action(platform_name, N(banplayer), platform_name, mvo()("player", player_name)) + ); + + BOOST_REQUIRE_EQUAL( + wasm_assert_msg("player is banned"), + transfer(player_name, game_name, ASSET("5.00000 KEK"), "1") + ); + + BOOST_REQUIRE_EQUAL( + success(), + push_action(platform_name, N(unbanplayer), platform_name, mvo()("player", player_name)) + ); + + BOOST_REQUIRE_EQUAL( + success(), + transfer(player_name, game_name, ASSET("5.00000 KEK"), "2") + ); +} +FC_LOG_AND_RETHROW() + BOOST_AUTO_TEST_SUITE_END() } // namespace testing diff --git a/sdk/include/game-contract-sdk/game_base.hpp b/sdk/include/game-contract-sdk/game_base.hpp index c430252..6a0edbf 100644 --- a/sdk/include/game-contract-sdk/game_base.hpp +++ b/sdk/include/game-contract-sdk/game_base.hpp @@ -358,6 +358,8 @@ class game : public eosio::contract { return; } + check_player_not_banned(from); + // token verifying eosio::check(get_token_contract(quantity) == get_first_receiver(), "transfer from incorrect contract"); const auto& token = quantity.symbol.code().to_string(); @@ -875,6 +877,12 @@ class game : public eosio::contract { eosio::check(!it->paused, "token is paused"); } + void check_player_not_banned(const name player) const { + const auto platform = get_platform(); + platform::ban_list_table ban_list(platform, platform.value); + eosio::check(ban_list.find(player.value) == ban_list.end(), "player is banned"); + } + #ifdef IS_DEBUG public: /* debug table */ diff --git a/sdk/libs/platform-contracts b/sdk/libs/platform-contracts index 10498c3..be2660c 160000 --- a/sdk/libs/platform-contracts +++ b/sdk/libs/platform-contracts @@ -1 +1 @@ -Subproject commit 10498c3f4dc020e8f353bd6a5e2d35e64449bfc6 +Subproject commit be2660c8bedd1d7485e7102a4cb717e08bed3a86 diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index aceebbe..e97bba8 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5) set(DAOBET_CONTRACTS_VERSION "v1.0.7") -set(PLATFORM_CONTRACTS_VERSION "v1.2.1") +set(PLATFORM_CONTRACTS_VERSION "v1.2.2-rc") find_package(eosio) From 93164be77696e6235043d7f959295a4d7e53e1a9 Mon Sep 17 00:00:00 2001 From: allerria Date: Wed, 3 Feb 2021 17:55:57 +0300 Subject: [PATCH 2/2] update tester platform_contract_version to v1.2.2 --- tester/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index e97bba8..ad26d77 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5) set(DAOBET_CONTRACTS_VERSION "v1.0.7") -set(PLATFORM_CONTRACTS_VERSION "v1.2.2-rc") +set(PLATFORM_CONTRACTS_VERSION "v1.2.2") find_package(eosio)