Skip to content

Commit 0e154cf

Browse files
Refactor common code to helper function
1 parent e7be3e2 commit 0e154cf

4 files changed

Lines changed: 31 additions & 25 deletions

File tree

app/controllers/vm_cloud_controller.rb

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,20 +125,15 @@ def prefix_by_nodetype(nodetype)
125125
end
126126

127127
def set_elements_and_redirect_unauthorized_user
128-
params[:id] = normalize_vm_node_id(params[:id])
129-
@nodetype, _id = parse_nodetype_and_id(params[:id])
130-
prefix = prefix_by_nodetype(@nodetype)
128+
129+
prefix = setup_node_and_prefix
130+
return true if prefix.nil?
131131

132132
# Position in tree that matches selected record
133133
if role_allows?(:feature => "instances_accord") && prefix == "instances"
134134
set_active_elements_authorized_user('instances_tree', 'instances')
135135
elsif role_allows?(:feature => "images_accord") && prefix == "images"
136136
set_active_elements_authorized_user('images_tree', 'images')
137-
elsif prefix.nil?
138-
session.delete(:exp_parms)
139-
flash_to_session(_("Can't access selected records"), :error)
140-
redirect_to(:action => 'explorer', :id => nil)
141-
return true
142137
elsif role_allows?(:feature => "#{prefix}_filter_accord")
143138
set_active_elements_authorized_user("#{prefix}_filter_tree", "#{prefix}_filter")
144139
else

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: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,13 @@ def prefix_by_nodetype(nodetype)
5252
end
5353

5454
def set_elements_and_redirect_unauthorized_user
55-
params[:id] = normalize_vm_node_id(params[:id])
56-
@nodetype, _id = parse_nodetype_and_id(params[:id])
57-
prefix = prefix_by_nodetype(@nodetype)
55+
56+
prefix = setup_node_and_prefix
57+
return true if prefix.nil?
5858

5959
# Position in tree that matches selected record
6060
if role_allows?(:feature => "vandt_accord")
6161
set_active_elements_authorized_user('vandt_tree', 'vandt')
62-
elsif prefix.nil?
63-
session.delete(:exp_parms)
64-
flash_to_session(_("Can't access selected records"), :error)
65-
redirect_to(:action => 'explorer', :id => nil)
66-
return true
6762
elsif role_allows?(:feature => "#{prefix}_filter_accord")
6863
set_active_elements_authorized_user("#{prefix}_filter_tree", "#{prefix}_filter")
6964
else

app/controllers/vm_or_template_controller.rb

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,11 @@ def prefix_by_nodetype(nodetype)
4242
end
4343

4444
def set_elements_and_redirect_unauthorized_user
45-
params[:id] = normalize_vm_node_id(params[:id])
46-
@nodetype, = parse_nodetype_and_id(params[:id])
47-
prefix = prefix_by_nodetype(@nodetype)
45+
prefix = setup_node_and_prefix
46+
return true if prefix.nil?
4847

4948
# Position in tree that matches selected record
50-
if prefix.nil?
51-
session.delete(:exp_parms)
52-
flash_to_session(_("Can't access selected records"), :error)
53-
redirect_to(:action => 'explorer', :id => nil)
54-
return true
55-
elsif role_allows?(:feature => "#{prefix}_filter_accord")
49+
if role_allows?(:feature => "#{prefix}_filter_accord")
5650
set_active_elements_authorized_user("#{prefix}_filter_tree", "#{prefix}_filter")
5751
else
5852
redirect_to(:controller => 'dashboard', :action => "auth_error")

0 commit comments

Comments
 (0)