diff options
-rw-r--r-- | sql/updates/auth/2014_12_21_00_auth.sql | 9 | ||||
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 1 | ||||
-rw-r--r-- | src/server/game/Handlers/TradeHandler.cpp | 4 |
3 files changed, 13 insertions, 1 deletions
diff --git a/sql/updates/auth/2014_12_21_00_auth.sql b/sql/updates/auth/2014_12_21_00_auth.sql new file mode 100644 index 00000000000..ddea3d335ff --- /dev/null +++ b/sql/updates/auth/2014_12_21_00_auth.sql @@ -0,0 +1,9 @@ +-- Add rbac_permissions +DELETE FROM `rbac_permissions` WHERE `id` = 51; +INSERT INTO `rbac_permissions` (`id`,`name`) VALUES +(51, 'Allow trading between factions'); + +-- Add rbac_linked_permissions +DELETE FROM `rbac_linked_permissions` WHERE `linkedId` = 51; +INSERT INTO `rbac_linked_permissions` (`id`,`linkedId`) VALUES +(194, 51); diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 7001374d90a..d63ba84605e 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -100,6 +100,7 @@ enum RBACPermissions RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA = 48, RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE = 49, RBAC_PERM_MAY_CHECK_OWN_EMAIL = 50, + RBAC_PERM_ALLOW_TWO_SIDE_TRADE = 51, // Free space for core permissions (till 149) // Roles (Permissions with delegated permissions) use 199 and descending diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index 4b032199604..8949b161e7b 100644 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -676,7 +676,9 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) return; } - if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_TRADE) && pOther->GetTeam() !=_player->GetTeam()) + if (pOther->GetTeam() != _player->GetTeam() && + (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_TRADE) && + !GetPlayer()->GetSession()->HasPermission(rbac::RBAC_PERM_ALLOW_TWO_SIDE_TRADE))) { info.Status = TRADE_STATUS_WRONG_FACTION; SendTradeStatus(info); |