Skip to content

Commit aa59016

Browse files
Refactor common code to helper function
1 parent 791787d commit aa59016

4 files changed

Lines changed: 40 additions & 12 deletions

File tree

app/controllers/vm_cloud_controller.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,18 @@ def get_filters
115115
end
116116

117117
def prefix_by_nodetype(nodetype)
118-
case TreeBuilder.get_model_for_prefix(nodetype).underscore
118+
model = TreeBuilder.get_model_for_prefix(nodetype)
119+
return nil if model.nil?
120+
121+
case model.underscore
119122
when "miq_template" then "images"
120123
when "vm" then "instances"
121124
end
122125
end
123126

124127
def set_elements_and_redirect_unauthorized_user
125-
params[:id] = normalize_vm_node_id(params[:id])
126-
@nodetype, _id = parse_nodetype_and_id(params[:id])
127-
prefix = prefix_by_nodetype(@nodetype)
128+
prefix = setup_node_and_prefix
129+
return true if prefix.nil?
128130

129131
# Position in tree that matches selected record
130132
if role_allows?(:feature => "instances_accord") && prefix == "instances"

app/controllers/vm_common.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,28 @@ def normalize_vm_node_id(id)
800800
record ? TreeBuilder.build_node_id(record) : id
801801
end
802802

803+
# Shared preamble for all VM explorer set_elements_and_redirect_unauthorized_user methods.
804+
# Normalises params[:id], parses the nodetype, resolves the accordion prefix, and handles
805+
# the case where the prefix is nil (bad/unrecognised node id) by redirecting back to the
806+
# explorer with an error flash.
807+
#
808+
# Returns the resolved prefix string, or nil if a redirect was already issued (in which
809+
# case the caller should return immediately).
810+
def setup_node_and_prefix
811+
params[:id] = normalize_vm_node_id(params[:id])
812+
@nodetype, = parse_nodetype_and_id(params[:id])
813+
prefix = prefix_by_nodetype(@nodetype)
814+
815+
if prefix.nil?
816+
session.delete(:exp_parms)
817+
flash_to_session(_("Can't access selected records"), :error)
818+
redirect_to(:action => 'explorer', :id => nil)
819+
return nil
820+
end
821+
822+
prefix
823+
end
824+
803825
# if node is VM or Template is true - select parent node in explorer tree but show info of Vm/Template
804826
def resolve_node_info(id)
805827
nodetype, id = id.split("-")

app/controllers/vm_infra_controller.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,18 @@ def features
4242
end
4343

4444
def prefix_by_nodetype(nodetype)
45-
case TreeBuilder.get_model_for_prefix(nodetype).underscore
45+
model = TreeBuilder.get_model_for_prefix(nodetype)
46+
return nil if model.nil?
47+
48+
case model.underscore
4649
when "miq_template" then "templates"
4750
when "vm" then "vms"
4851
end
4952
end
5053

5154
def set_elements_and_redirect_unauthorized_user
52-
params[:id] = normalize_vm_node_id(params[:id])
53-
@nodetype, _id = parse_nodetype_and_id(params[:id])
54-
prefix = prefix_by_nodetype(@nodetype)
55+
prefix = setup_node_and_prefix
56+
return true if prefix.nil?
5557

5658
# Position in tree that matches selected record
5759
if role_allows?(:feature => "vandt_accord")

app/controllers/vm_or_template_controller.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,18 @@ def features
3232
end
3333

3434
def prefix_by_nodetype(nodetype)
35-
case TreeBuilder.get_model_for_prefix(nodetype).underscore
35+
model = TreeBuilder.get_model_for_prefix(nodetype)
36+
return nil if model.nil?
37+
38+
case model.underscore
3639
when "miq_template" then "templates_images"
3740
when "vm" then "vms_instances"
3841
end
3942
end
4043

4144
def set_elements_and_redirect_unauthorized_user
42-
params[:id] = normalize_vm_node_id(params[:id])
43-
@nodetype, = parse_nodetype_and_id(params[:id])
44-
prefix = prefix_by_nodetype(@nodetype)
45+
prefix = setup_node_and_prefix
46+
return true if prefix.nil?
4547

4648
# Position in tree that matches selected record
4749
if role_allows?(:feature => "#{prefix}_filter_accord")

0 commit comments

Comments
 (0)