From db8cd3761d644ab8f7cf9f8e3dad2d54f41d6046 Mon Sep 17 00:00:00 2001 From: KuehhornIT Date: Thu, 19 Mar 2026 15:56:45 +0100 Subject: [PATCH 1/3] structure/history: Berechtigung history[article_rollback] in history[read] und history[article_rollback] aufsplitten --- .../addons/structure/plugins/history/boot.php | 9 ++++-- .../history/fragments/history/layer.php | 2 ++ .../structure/plugins/history/lang/de_de.lang | 1 + .../structure/plugins/history/lang/en_gb.lang | 1 + .../structure/plugins/history/lang/es_es.lang | 1 + .../structure/plugins/history/lang/it_it.lang | 29 ++++++++++--------- .../structure/plugins/history/lang/pt_br.lang | 1 + .../structure/plugins/history/lang/ru_ru.lang | 1 + .../structure/plugins/history/lang/sv_se.lang | 1 + .../structure/plugins/history/package.yml | 2 +- 10 files changed, 31 insertions(+), 17 deletions(-) diff --git a/redaxo/src/addons/structure/plugins/history/boot.php b/redaxo/src/addons/structure/plugins/history/boot.php index d4c31405d8..bc5060ddfb 100644 --- a/redaxo/src/addons/structure/plugins/history/boot.php +++ b/redaxo/src/addons/structure/plugins/history/boot.php @@ -10,6 +10,7 @@ $historyDate = rex_request('rex_history_date', 'string'); +rex_perm::register('history[read]', null, rex_perm::OPTIONS); rex_perm::register('history[article_rollback]', null, rex_perm::OPTIONS); if ('' != $historyDate) { @@ -40,7 +41,7 @@ throw new rex_http_exception(new rex_exception('no permission'), rex_response::HTTP_UNAUTHORIZED); } - if (!$user->hasPerm('history[article_rollback]')) { + if (!$user->hasPerm('history[read]')) { throw new rex_http_exception(new rex_exception('no permission for the slice version'), rex_response::HTTP_FORBIDDEN); } @@ -105,7 +106,7 @@ static function (rex_extension_point $ep) { }, ); -if (rex::isBackend() && rex::getUser()?->hasPerm('history[article_rollback]')) { +if (rex::isBackend() && rex::getUser()?->hasPerm('history[read]')) { rex_view::addCssFile($plugin->getAssetsUrl('noUiSlider/nouislider.css')); rex_view::addJsFile($plugin->getAssetsUrl('noUiSlider/nouislider.js'), [rex_view::JS_IMMUTABLE => true]); rex_view::addCssFile($plugin->getAssetsUrl('history.css')); @@ -113,6 +114,9 @@ static function (rex_extension_point $ep) { switch (rex_request('rex_history_function', 'string')) { case 'snap': + if (!rex::requireUser()->hasPerm('history[article_rollback]')) { + throw new rex_http_exception(new rex_exception('no permission for article rollback'), rex_response::HTTP_FORBIDDEN); + } $articleId = rex_request('history_article_id', 'int'); $clangId = rex_request('history_clang_id', 'int'); $historyDate = rex_request('history_date', 'string'); @@ -152,6 +156,7 @@ static function (rex_extension_point $ep) { $fragment->setVar('content1iframe', $content1iframe, false); $fragment->setVar('content2select', $content2select, false); $fragment->setVar('content2iframe', $content2iframe, false); + $fragment->setVar('allow_rollback', rex::requireUser()->hasPerm('history[article_rollback]')); echo $fragment->parse('history/layer.php'); exit; diff --git a/redaxo/src/addons/structure/plugins/history/fragments/history/layer.php b/redaxo/src/addons/structure/plugins/history/fragments/history/layer.php index f83c1376ec..6f2527cb65 100644 --- a/redaxo/src/addons/structure/plugins/history/fragments/history/layer.php +++ b/redaxo/src/addons/structure/plugins/history/fragments/history/layer.php @@ -48,7 +48,9 @@
+ getVar('allow_rollback')): ?> +
diff --git a/redaxo/src/addons/structure/plugins/history/lang/de_de.lang b/redaxo/src/addons/structure/plugins/history/lang/de_de.lang index c5ff6562e9..245dd56a43 100644 --- a/redaxo/src/addons/structure/plugins/history/lang/de_de.lang +++ b/redaxo/src/addons/structure/plugins/history/lang/de_de.lang @@ -8,6 +8,7 @@ structure_history_info_content =

Ein History PlugIn mit welchem man Änderung structure_history_todos = Todos structure_history_todos_content =

+perm_options_history[read] = Artikel-Historie anzeigen perm_options_history[article_rollback] = Artikel wiederherstellen (Historie) structure_history_button_delete_history = Historie komplett löschen diff --git a/redaxo/src/addons/structure/plugins/history/lang/en_gb.lang b/redaxo/src/addons/structure/plugins/history/lang/en_gb.lang index 5a8bde8419..0657160727 100644 --- a/redaxo/src/addons/structure/plugins/history/lang/en_gb.lang +++ b/redaxo/src/addons/structure/plugins/history/lang/en_gb.lang @@ -8,6 +8,7 @@ structure_history_info_content =

The History PlugIn records all changes made structure_history_todos = To do structure_history_todos_content =

+perm_options_history[read] = View article history perm_options_history[article_rollback] = Restore article (History) structure_history_button_delete_history = Delete all snapshots from History diff --git a/redaxo/src/addons/structure/plugins/history/lang/es_es.lang b/redaxo/src/addons/structure/plugins/history/lang/es_es.lang index 9b3b5924aa..1e75c83dab 100644 --- a/redaxo/src/addons/structure/plugins/history/lang/es_es.lang +++ b/redaxo/src/addons/structure/plugins/history/lang/es_es.lang @@ -8,6 +8,7 @@ structure_history_info_content =

Un plug-in de la historia con la que puede r structure_history_todos = Todos structure_history_todos_content =

+perm_options_history[read] = Ver historial del artículo perm_options_history[article_rollback] = Restablecimiento del artículo (Historia) structure_history_button_delete_history = Borrar por completo la historia diff --git a/redaxo/src/addons/structure/plugins/history/lang/it_it.lang b/redaxo/src/addons/structure/plugins/history/lang/it_it.lang index 29a7fcd541..c117f3e93e 100644 --- a/redaxo/src/addons/structure/plugins/history/lang/it_it.lang +++ b/redaxo/src/addons/structure/plugins/history/lang/it_it.lang @@ -1,16 +1,17 @@ -structure_history = -structure_history_title_info = -structure_history_snapshot_reactivate = -structure_history_snapshot_reactivated = -structure_history_overview_versions = -structure_history_current_version = -structure_history_info_content = -structure_history_todos = -structure_history_todos_content = +structure_history = +structure_history_title_info = +structure_history_snapshot_reactivate = +structure_history_snapshot_reactivated = +structure_history_overview_versions = +structure_history_current_version = +structure_history_info_content = +structure_history_todos = +structure_history_todos_content = -perm_options_history[article_rollback] = +perm_options_history[read] = Visualizza cronologia articolo +perm_options_history[article_rollback] = -structure_history_button_delete_history = -structure_history_deleted = -structure_history_savedby = -structure_history_close = +structure_history_button_delete_history = +structure_history_deleted = +structure_history_savedby = +structure_history_close = diff --git a/redaxo/src/addons/structure/plugins/history/lang/pt_br.lang b/redaxo/src/addons/structure/plugins/history/lang/pt_br.lang index 25b7de3893..f02a8a899b 100644 --- a/redaxo/src/addons/structure/plugins/history/lang/pt_br.lang +++ b/redaxo/src/addons/structure/plugins/history/lang/pt_br.lang @@ -8,6 +8,7 @@ structure_history_info_content =

O PlugIn história grava todas as alteraç structure_history_todos = A ser feito structure_history_todos_content =