diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-04-05 11:19:15 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-04-05 11:19:15 +0300 |
commit | 7412ad2e3680b7f7a18d89dd8e30f01b28c19326 (patch) | |
tree | 46be39c3b60be74563354beeaec8753f87f11a5c /app/services | |
parent | b87820c162cfa38678dfe2b56c41b41253122b3e (diff) | |
parent | 7481fc5aa8e7d6cee3e03480a6b7dd7a7d19307e (diff) |
Merge branch 'issue_44551' into 'master'
Fix 404 in group boards when moving issue between lists
Closes #44551
See merge request gitlab-org/gitlab-ce!18064
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/boards/issues/move_service.rb | 5 | ||||
-rw-r--r-- | app/services/issues/update_service.rb | 17 |
2 files changed, 17 insertions, 5 deletions
diff --git a/app/services/boards/issues/move_service.rb b/app/services/boards/issues/move_service.rb index 15fed7d17c1..3ceab209f3f 100644 --- a/app/services/boards/issues/move_service.rb +++ b/app/services/boards/issues/move_service.rb @@ -42,7 +42,10 @@ module Boards ) end - attrs[:move_between_ids] = move_between_ids if move_between_ids + if move_between_ids + attrs[:move_between_ids] = move_between_ids + attrs[:board_group_id] = board.group&.id + end attrs end diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index d7aa7e2347e..4161932ad2a 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -55,9 +55,10 @@ module Issues return unless params[:move_between_ids] after_id, before_id = params.delete(:move_between_ids) + board_group_id = params.delete(:board_group_id) - issue_before = get_issue_if_allowed(issue.project, before_id) if before_id - issue_after = get_issue_if_allowed(issue.project, after_id) if after_id + issue_before = get_issue_if_allowed(before_id, board_group_id) + issue_after = get_issue_if_allowed(after_id, board_group_id) issue.move_between(issue_before, issue_after) end @@ -84,8 +85,16 @@ module Issues private - def get_issue_if_allowed(project, id) - issue = project.issues.find(id) + def get_issue_if_allowed(id, board_group_id = nil) + return unless id + + issue = + if board_group_id + IssuesFinder.new(current_user, group_id: board_group_id).find_by(id: id) + else + project.issues.find(id) + end + issue if can?(current_user, :update_issue, issue) end |