Skip to content

Commit ef48c1e

Browse files
committed
Store role ids for custom buttons, not role names
1 parent 741093d commit ef48c1e

File tree

3 files changed

+10
-21
lines changed

3 files changed

+10
-21
lines changed

app/controllers/application_controller/buttons.rb

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -852,12 +852,7 @@ def button_set_record_vars(button)
852852
end
853853
button.visibility ||= {}
854854
if @edit[:new][:visibility_typ] == "role"
855-
roles = []
856-
@edit[:new][:roles].each do |r|
857-
role = MiqUserRole.find_by(:id => r)
858-
roles.push(role.name) if role
859-
end
860-
button.visibility[:roles] = roles
855+
button.visibility[:roles] = @edit[:new][:roles]
861856
else
862857
button.visibility[:roles] = ["_ALL_"]
863858
end
@@ -1026,13 +1021,9 @@ def button_set_form_vars
10261021
if @custom_button.visibility[:roles][0] == "_ALL_"
10271022
@edit[:new][:roles] = ["_ALL_"]
10281023
else
1029-
@edit[:new][:roles] ||= []
1030-
@custom_button.visibility[:roles].each do |r|
1031-
role = MiqUserRole.find_by(:name => r)
1032-
@edit[:new][:roles].push(role.id) if role
1033-
end
1024+
@edit[:new][:roles] = @custom_button.visibility[:roles]
1025+
@edit[:new][:roles].sort! if @edit[:new][:roles].present?
10341026
end
1035-
@edit[:new][:roles].sort! if @edit[:new][:roles].present?
10361027
end
10371028

10381029
@edit[:sorted_user_roles] = []
@@ -1096,9 +1087,8 @@ def buttons_get_node_info(node)
10961087
end
10971088
@sb[:user_roles] = []
10981089
if @custom_button.visibility && @custom_button.visibility[:roles] && @custom_button.visibility[:roles][0] != "_ALL_"
1099-
MiqUserRole.all.sort_by(&:name).each do |r|
1100-
@sb[:user_roles].push(r.name) if @custom_button.visibility[:roles].include?(r.name)
1101-
end
1090+
role_ids = @custom_button.visibility[:roles]
1091+
@sb[:user_roles] = MiqUserRole.where(:id => role_ids).order(:name).pluck(:name)
11021092
end
11031093
@resolve[:new][:target_class] = "ServiceTemplate"
11041094
dialog_id = @custom_button.resource_action.dialog_id

app/controllers/miq_ae_customization_controller/custom_buttons.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,8 @@ def ab_get_node_info(node)
7676
end
7777
@sb[:user_roles] = []
7878
if @custom_button.visibility && @custom_button.visibility[:roles] && @custom_button.visibility[:roles][0] != "_ALL_"
79-
MiqUserRole.all.sort_by(&:name).each do |r|
80-
@sb[:user_roles].push(r.name) if @custom_button.visibility[:roles].include?(r.name)
81-
end
79+
role_ids = @custom_button.visibility[:roles]
80+
@sb[:user_roles] = MiqUserRole.where(:id => role_ids).order(:name).pluck(:name)
8281
end
8382
dialog_id = @custom_button.resource_action.dialog_id
8483
@sb[:dialog_label] = dialog_id ? Dialog.find(dialog_id).label : ""

spec/controllers/application_controller/buttons_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@
325325
:object_request => 'request',
326326
:open_url => true,
327327
:visibility_typ => 'role',
328-
:roles => [role.id.to_s],
328+
:roles => [role.id],
329329
:display_for => :list}
330330
}
331331
}
@@ -340,13 +340,13 @@
340340

341341
it "sets new role visibility for custom button" do
342342
controller.send(:button_set_record_vars, custom_button)
343-
expect(custom_button.visibility[:roles]).to eq([role.name])
343+
expect(custom_button.visibility[:roles]).to eq([role.id])
344344
end
345345

346346
it "sets new role and preserves old role for custom button" do
347347
edit[:new][:roles] = [old_role.id, role.id.to_s] # old roles are represented by int and new ones by string
348348
controller.send(:button_set_record_vars, custom_button)
349-
expect(custom_button.visibility[:roles]).to eq([old_role.name, role.name])
349+
expect(custom_button.visibility[:roles]).to eq([old_role.id, role.id.to_s])
350350
end
351351
end
352352

0 commit comments

Comments
 (0)