auth master rights: Skript-Abhängigkeiten und Positionen reparieren
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Tue, 29 Oct 2019 16:24:56 +0000 (17:24 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Tue, 29 Oct 2019 16:24:56 +0000 (17:24 +0100)
Durch falsche Abhängikeiten können bei Updates bestimmte Rechte feste
Positionen größer 1000 zugewiesen bekommen, bevor das Upgrade-Skript zum
Platzschaffen (multiplizieren mit 100) durchlaufen wird.
Diese werden dann auch mit 100 multiplizert und landen ganz am Ende, was nicht
gewollt ist.
Dieser commit behebt sowohl das Problem bei neuen Updates
(v.A. ältere Versionen sind betroffen) und versucht die falschen Positionen
zu korrigieren.

sql/Pg-upgrade2-auth/all_drafts_edit.pl
sql/Pg-upgrade2-auth/master_rights_positions_fix.sql [new file with mode: 0644]
sql/Pg-upgrade2-auth/purchase_letter_rights.pl

index 5ee5b5e..f9db7d0 100644 (file)
@@ -1,6 +1,6 @@
 # @tag: all_drafts_edit
 # @description: Zugriffsrecht auf alle Entwürfe
-# @depends: release_3_4_0
+# @depends: release_3_4_0 add_master_rights master_rights_position_gaps
 # @locales: Edit all drafts
 # @ignore: 0
 package SL::DBUpgrade2::Auth::all_drafts_edit;
diff --git a/sql/Pg-upgrade2-auth/master_rights_positions_fix.sql b/sql/Pg-upgrade2-auth/master_rights_positions_fix.sql
new file mode 100644 (file)
index 0000000..5ec5ffa
--- /dev/null
@@ -0,0 +1,15 @@
+-- @tag: master_rights_positions_fix
+-- @description: Position in Rechtetabelle korrigieren (falls zutreffend)
+-- @depends: release_3_5_4 purchase_letter_rights all_drafts_edit right_purchase_all_edit rights_sales_purchase_edit_prices
+
+UPDATE auth.master_rights SET position = position/100
+       WHERE position > 10000
+       AND   name IN ('purchase_letter_edit', 'purchase_letter_report', 'all_drafts_edit');
+
+UPDATE auth.master_rights SET position = (SELECT position + 10 FROM auth.master_rights WHERE name = 'purchase_letter_edit')
+       WHERE position > 10000
+       AND   name LIKE 'purchase_all_edit';
+
+UPDATE auth.master_rights SET position =(SELECT position + 10 FROM auth.master_rights WHERE name = 'purchase_all_edit')
+       WHERE position > 10000
+       AND   name LIKE 'purchase_edit_prices';
index 8987f1f..d803cbe 100644 (file)
@@ -1,6 +1,6 @@
 # @tag: purchase_letter_rights
 # @description: Neue Rechte für Lieferantenbriefe
-# @depends: release_3_2_0 sales_letter_rights
+# @depends: release_3_4_0 add_master_rights master_rights_position_gaps
 # @locales: Edit purchase letters
 # @locales: Show purchase letters report
 package SL::DBUpgrade2::Auth::purchase_letter_rights;