mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-16 15:57:22 +00:00
Continue BE backport
This commit is contained in:
@ -5,6 +5,7 @@ module Boards
|
||||
before_action :authorize_read_issue, only: [:index]
|
||||
before_action :authorize_create_issue, only: [:create]
|
||||
before_action :authorize_update_issue, only: [:update]
|
||||
skip_before_action :authenticate_user!, only: [:index]
|
||||
|
||||
def index
|
||||
issues = Boards::Issues::ListService.new(board_parent, current_user, filter_params).execute
|
||||
|
@ -4,6 +4,7 @@ module Boards
|
||||
|
||||
before_action :authorize_admin_list, only: [:create, :update, :destroy, :generate]
|
||||
before_action :authorize_read_list, only: [:index]
|
||||
skip_before_action :authenticate_user!, only: [:index]
|
||||
|
||||
def index
|
||||
lists = Boards::Lists::ListService.new(board.parent, current_user).execute(board)
|
||||
|
42
app/controllers/concerns/boards_responses.rb
Normal file
42
app/controllers/concerns/boards_responses.rb
Normal file
@ -0,0 +1,42 @@
|
||||
module BoardsResponses
|
||||
def authorize_read_list
|
||||
authorize_action_for!(board.parent, :read_list)
|
||||
end
|
||||
|
||||
def authorize_read_issue
|
||||
authorize_action_for!(board.parent, :read_issue)
|
||||
end
|
||||
|
||||
def authorize_update_issue
|
||||
authorize_action_for!(issue, :admin_issue)
|
||||
end
|
||||
|
||||
def authorize_create_issue
|
||||
authorize_action_for!(project, :admin_issue)
|
||||
end
|
||||
|
||||
def authorize_admin_list
|
||||
authorize_action_for!(board.parent, :admin_list)
|
||||
end
|
||||
|
||||
def authorize_action_for!(resource, ability)
|
||||
return render_403 unless can?(current_user, ability, resource)
|
||||
end
|
||||
|
||||
def respond_with_boards
|
||||
respond_with(@boards)
|
||||
end
|
||||
|
||||
def respond_with_board
|
||||
respond_with(@board)
|
||||
end
|
||||
|
||||
def respond_with(resource)
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.json do
|
||||
render json: serialize_as_json(resource)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -1,6 +1,6 @@
|
||||
class Projects::BoardsController < Projects::ApplicationController
|
||||
include IssuableCollections
|
||||
include BoardsResponses
|
||||
include IssuableCollections
|
||||
|
||||
before_action :authorize_read_board!, only: [:index, :show]
|
||||
before_action :assign_endpoint_vars
|
||||
|
@ -173,6 +173,7 @@ class Label < ActiveRecord::Base
|
||||
|
||||
def as_json(options = {})
|
||||
super(options).tap do |json|
|
||||
json[:type] = self.type
|
||||
json[:priority] = priority(options[:project]) if options.key?(:project)
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module Boards
|
||||
module Lists
|
||||
class CreateService < BaseService
|
||||
class CreateService < Boards::BaseService
|
||||
def execute(board)
|
||||
List.transaction do
|
||||
label = available_labels_for(board).find(params[:label_id])
|
||||
|
@ -1,6 +1,6 @@
|
||||
module Boards
|
||||
module Lists
|
||||
class DestroyService < BaseService
|
||||
class DestroyService < Boards::BaseService
|
||||
def execute(list)
|
||||
return false unless list.destroyable?
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
module Boards
|
||||
module Lists
|
||||
class GenerateService < BaseService
|
||||
class GenerateService < Boards::BaseService
|
||||
def execute(board)
|
||||
return false unless board.lists.movable.empty?
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
module Boards
|
||||
module Lists
|
||||
class ListService < BaseService
|
||||
class ListService < Boards::BaseService
|
||||
def execute(board)
|
||||
board.lists.create(list_type: :backlog) unless board.lists.backlog.exists?
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
module Boards
|
||||
module Lists
|
||||
class MoveService < BaseService
|
||||
class MoveService < Boards::BaseService
|
||||
def execute(list)
|
||||
@board = list.board
|
||||
@old_position = list.position
|
||||
|
@ -82,7 +82,7 @@ Manage your [repositories](user/project/repository/index.md) from the UI (user i
|
||||
|
||||
- [Discussions](user/discussions/index.md) Threads, comments, and resolvable discussions in issues, commits, and merge requests.
|
||||
- [Issues](user/project/issues/index.md)
|
||||
- [Issue Board](user/project/issue_board.md)
|
||||
- [Project issue Board](user/project/issue_board.md)
|
||||
- [Issues and merge requests templates](user/project/description_templates.md): Create templates for submitting new issues and merge requests.
|
||||
- [Labels](user/project/labels.md): Categorize your issues or merge requests based on descriptive titles.
|
||||
- [Merge Requests](user/project/merge_requests/index.md)
|
||||
|
1
spec/fixtures/api/schemas/issue.json
vendored
1
spec/fixtures/api/schemas/issue.json
vendored
@ -34,6 +34,7 @@
|
||||
"type": "string",
|
||||
"pattern": "^#[0-9A-Fa-f]{3}{1,2}+$"
|
||||
},
|
||||
"type": { "type": "string" },
|
||||
"title": { "type": "string" },
|
||||
"priority": { "type": ["integer", "null"] }
|
||||
},
|
||||
|
@ -98,7 +98,7 @@ describe Boards::Issues::MoveService do
|
||||
issue.move_to_end && issue.save!
|
||||
end
|
||||
|
||||
params.merge!(move_after_iid: issue1.iid, move_before_iid: issue2.iid)
|
||||
params.merge!(move_after_id: issue1.id, move_before_id: issue2.id)
|
||||
|
||||
described_class.new(project, user, params).execute(issue)
|
||||
|
||||
|
@ -80,7 +80,7 @@ describe Issues::UpdateService, :mailer do
|
||||
issue.save
|
||||
end
|
||||
|
||||
opts[:move_between_iids] = [issue1.iid, issue2.iid]
|
||||
opts[:move_between_ids] = [issue1.id, issue2.id]
|
||||
|
||||
update_issue(opts)
|
||||
|
||||
|
Reference in New Issue
Block a user