aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNyeriah <sarah.trysan@live.com>2014-12-10 22:50:28 -0200
committerNyeriah <sarah.trysan@live.com>2014-12-10 22:50:28 -0200
commit99c4c4cee5c2455d881cb8f3459ddf82bbd7e96d (patch)
treea29efc79e0f0291eb1fd4fa7a39dd26840f12436
parent88ca8b95e0e1a31bd561e741da96b582d16c984a (diff)
Core/RBAC: Allow setting different default security level roles to different realms
(cherry picked from commit c79af3f16f84d0d26bd69b5d06dd8754643ddc7f)
-rw-r--r--sql/base/auth_database.sql5
-rw-r--r--sql/updates/auth/2014_12_10_00_auth.sql3
-rw-r--r--src/server/game/Accounts/AccountMgr.cpp2
3 files changed, 7 insertions, 3 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index 35abaa2611c..9da864cb9a2 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -455,7 +455,8 @@ DROP TABLE IF EXISTS `rbac_default_permissions`;
CREATE TABLE `rbac_default_permissions` (
`secId` int(10) unsigned NOT NULL COMMENT 'Security Level id',
`permissionId` int(10) unsigned NOT NULL COMMENT 'permission id',
- PRIMARY KEY (`secId`,`permissionId`),
+ `realmId` int(11) NOT NULL DEFAULT '-1' COMMENT 'Realm Id, -1 means all',
+ PRIMARY KEY (`secId`,`permissionId`, `realmId`),
KEY `fk__rbac_default_permissions__rbac_permissions` (`permissionId`),
CONSTRAINT `fk__rbac_default_permissions__rbac_permissions` FOREIGN KEY (`permissionId`) REFERENCES `rbac_permissions` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Default permission to assign to different account security levels';
@@ -467,7 +468,7 @@ CREATE TABLE `rbac_default_permissions` (
LOCK TABLES `rbac_default_permissions` WRITE;
/*!40000 ALTER TABLE `rbac_default_permissions` DISABLE KEYS */;
-INSERT INTO `rbac_default_permissions` VALUES (0,195),(1,194),(2,193),(3,192);
+INSERT INTO `rbac_default_permissions` VALUES (3,192,-1),(2,193,-1),(1,194,-1),(0,195,-1);
/*!40000 ALTER TABLE `rbac_default_permissions` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/2014_12_10_00_auth.sql b/sql/updates/auth/2014_12_10_00_auth.sql
new file mode 100644
index 00000000000..8068fd3c459
--- /dev/null
+++ b/sql/updates/auth/2014_12_10_00_auth.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `rbac_default_permissions`
+ADD COLUMN `realmId` INT(11) NOT NULL DEFAULT '-1' COMMENT 'Realm Id, -1 means all',
+DROP PRIMARY KEY, ADD PRIMARY KEY (`secId`, `permissionId`, `realmId`);
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp
index 55f19d1612e..e69c5601ca0 100644
--- a/src/server/game/Accounts/AccountMgr.cpp
+++ b/src/server/game/Accounts/AccountMgr.cpp
@@ -456,7 +456,7 @@ void AccountMgr::LoadRBAC()
while (result->NextRow());
TC_LOG_DEBUG("rbac", "AccountMgr::LoadRBAC: Loading default permissions");
- result = LoginDatabase.Query("SELECT secId, permissionId FROM rbac_default_permissions ORDER BY secId ASC");
+ result = LoginDatabase.PQuery("SELECT secId, permissionId FROM rbac_default_permissions WHERE (realmId = %u OR realmId = -1) ORDER BY secId ASC", realmID);
if (!result)
{
TC_LOG_INFO("server.loading", ">> Loaded 0 default permission definitions. DB table `rbac_default_permissions` is empty.");