diff options
-rw-r--r-- | sql/base/auth_database.sql | 5 | ||||
-rw-r--r-- | sql/updates/auth/2014_12_10_00_auth.sql | 3 | ||||
-rw-r--r-- | src/server/game/Accounts/AccountMgr.cpp | 2 |
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."); |