Skip to content

Commit

Permalink
Fixed issue #2273 - Bulk Form javascript error when checking item (fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Billy Zhou committed Oct 12, 2018
1 parent 6439203 commit b1caed6
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 14 deletions.
Expand Up @@ -73,7 +73,7 @@ class Index extends App.ControllerSubContent
user_group_config = false

groups = []
group_ids = App.User.find(@Session.get('id')).all_group_ids()
group_ids = App.User.find(@Session.get('id')).allGroupIds()
if group_ids
for group_id in group_ids
group = App.Group.find(group_id)
Expand Down
6 changes: 3 additions & 3 deletions app/assets/javascripts/app/controllers/ticket_overview.coffee
Expand Up @@ -1222,9 +1222,9 @@ class Table extends App.Controller
ticket_ids = _.map(items, (el) -> $(el).val() )
ticket_group_ids = _.map(App.Ticket.findAll(ticket_ids), (ticket) -> ticket.group_id)
ticket_group_ids = _.uniq(ticket_group_ids)
user_permissions = App.Session.get('group_ids')
group_permissions = ticket_group_ids.map (id) -> user_permissions[id]
_.every(group_permissions, (list) -> 'full' in list || 'change' in list)
allowed_group_ids = App.User.find(@Session.get('id')).allGroupIds('change')
allowed_group_ids = _.map(allowed_group_ids, (id_string) -> parseInt(id_string, 10) )
_.every(ticket_group_ids, (id) -> id in allowed_group_ids)

viewmode: (e) =>
e.preventDefault()
Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/app/models/ticket.coffee
Expand Up @@ -249,7 +249,7 @@ class App.Ticket extends App.Model
user_id = App.Session.get('id')
return true if user_id is @customer_id
return false if !App.User.exists(user_id)
group_ids = App.User.find(user_id).all_group_ids(permission)
group_ids = App.User.find(user_id).allGroupIds(permission)
for local_group_id in group_ids
if local_group_id.toString() is @group_id.toString()
return true
Expand Down
14 changes: 13 additions & 1 deletion app/assets/javascripts/app/models/user.coffee
Expand Up @@ -254,7 +254,19 @@ class App.User extends App.Model
return access if access
false

all_group_ids: (permission = 'full') ->
###
Returns a list of all groups for which the user is permitted to perform the given permission key
user = App.User.find(3)
result = user.allGroupIds('change') # access to a given permission key
returns
["1", "2"]
###
allGroupIds: (permission = 'full') ->
group_ids = []
user_group_ids = App.Session.get('group_ids')
if user_group_ids
Expand Down
15 changes: 7 additions & 8 deletions test/browser/agent_ticket_overview_level0_test.rb
Expand Up @@ -485,11 +485,12 @@ def test_no_bulk_action_when_missing_change_permission
},
)

click(
css: 'a[href="#manage"]',
)
click(
css: '.content.active a[href="#manage/groups"]',
role_edit(
data: {
name: 'Agent',
group_permissions: { 2 => ['full'],
3 => ['full'], }
},
)

user_edit(
Expand All @@ -508,9 +509,7 @@ def test_no_bulk_action_when_missing_change_permission
email: 'agent2@example.com',
password: 'test',
role: 'Agent',
permissions: { 1 => %w[read create overview],
2 => ['full'],
3 => ['full'], }
permissions: { 1 => %w[read create overview] }
},
)

Expand Down
11 changes: 11 additions & 0 deletions test/browser_test_helper.rb
Expand Up @@ -3816,6 +3816,17 @@ def role_edit(params = {})
end
end

if data.key?(:group_permissions)
data[:group_permissions].each do |key, value|
value.each do |permission|
check(
browser: instance,
css: ".modal input[name=\"group_ids::#{key}\"][value=\"#{permission}\"]",
)
end
end
end

if data.key?(:active)
element = instance.find_elements(css: '.modal select[name="active"]')[0]
dropdown = Selenium::WebDriver::Support::Select.new(element)
Expand Down

0 comments on commit b1caed6

Please sign in to comment.