diff --git a/changelog.d/feat-edithtml-role-permission.md b/changelog.d/feat-edithtml-role-permission.md new file mode 100644 index 000000000..d644a034f --- /dev/null +++ b/changelog.d/feat-edithtml-role-permission.md @@ -0,0 +1 @@ +FEAT: The "editHtml" permission can now be granted to roles via the role management GUI, instead of only being available to administrators (#452) diff --git a/share/server/core/classes/CoreAuthorisationHandler.php b/share/server/core/classes/CoreAuthorisationHandler.php index a00d39e4c..caf666913 100644 --- a/share/server/core/classes/CoreAuthorisationHandler.php +++ b/share/server/core/classes/CoreAuthorisationHandler.php @@ -63,7 +63,6 @@ class CoreAuthorisationHandler 'createObject' => 'edit', 'deleteObject' => 'edit', 'addModify' => 'edit', - 'editHtml' => 'edit', ], 'Overview' => [ 'getOverviewRotations' => 'view', diff --git a/share/server/core/classes/CorePDOHandler.php b/share/server/core/classes/CorePDOHandler.php index 10eeb9a91..26093b6ae 100644 --- a/share/server/core/classes/CorePDOHandler.php +++ b/share/server/core/classes/CorePDOHandler.php @@ -174,6 +174,10 @@ public static function initialize_static() ], 'updates' => [ + '1100500' => [ + ['-perm-add', ['mod' => 'Map', 'act' => 'editHtml', 'obj' => '*']], + ], + '1091500' => [ ['-perm-change-act', ['mod' => 'ChangePassword', 'old_act' => 'change', 'new_act' => '*']] ], @@ -830,6 +834,10 @@ public function createInitialDb() $this->queryFatal('-perm-add', ['mod' => 'Map', 'act' => 'manage', 'obj' => '*']); $this->queryFatal('-perm-add', ['mod' => 'Map', 'act' => 'add', 'obj' => '*']); + // Access controll: Edit HTML content of map objects, grantable via the + // role management GUI (CVE-2024-47090) + $this->queryFatal('-perm-add', ['mod' => 'Map', 'act' => 'editHtml', 'obj' => '*']); + $this->queryFatal('-perm-add', ['mod' => 'MainCfg', 'act' => 'edit', 'obj' => '*']); // Access control: View URLs e.g. in rotation pools diff --git a/share/server/core/classes/ViewManageRoles.php b/share/server/core/classes/ViewManageRoles.php index 3f3ad89c4..742723637 100644 --- a/share/server/core/classes/ViewManageRoles.php +++ b/share/server/core/classes/ViewManageRoles.php @@ -205,7 +205,12 @@ private function renderPermissions($role_id) 'rotations' => [], ]; foreach ($AUTHORISATION->getAllVisiblePerms() as $perm) { - if ($perm['mod'] == 'Map' && $perm['act'] != 'add' && $perm['act'] != 'manage') { + if ( + $perm['mod'] == 'Map' + && $perm['act'] != 'add' + && $perm['act'] != 'manage' + && $perm['act'] != 'editHtml' + ) { $map_name = $perm['obj']; if (!isset($permissions_by_section['maps'][$map_name])) { $permissions_by_section['maps'][$map_name] = [];