aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/auth/2014_12_21_00_auth.sql9
-rw-r--r--src/server/game/Accounts/RBAC.h1
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp4
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);