diff options
-rw-r--r-- | app/controllers/projects/board_issues_controller.rb | 52 | ||||
-rw-r--r-- | app/controllers/projects/board_lists_controller.rb | 65 | ||||
-rw-r--r-- | app/controllers/projects/boards/issues_controller.rb | 56 | ||||
-rw-r--r-- | app/controllers/projects/boards/lists_controller.rb | 69 | ||||
-rw-r--r-- | config/routes.rb | 14 | ||||
-rw-r--r-- | spec/controllers/projects/boards/issues_controller_spec.rb (renamed from spec/controllers/projects/board_issues_controller_spec.rb) | 2 | ||||
-rw-r--r-- | spec/controllers/projects/boards/lists_controller_spec.rb (renamed from spec/controllers/projects/board_lists_controller_spec.rb) | 2 |
7 files changed, 135 insertions, 125 deletions
diff --git a/app/controllers/projects/board_issues_controller.rb b/app/controllers/projects/board_issues_controller.rb deleted file mode 100644 index c1814fb1191..00000000000 --- a/app/controllers/projects/board_issues_controller.rb +++ /dev/null @@ -1,52 +0,0 @@ -class Projects::BoardIssuesController < Projects::ApplicationController - respond_to :json - - before_action :authorize_read_issue!, only: [:index] - before_action :authorize_update_issue!, only: [:update] - - rescue_from ActiveRecord::RecordNotFound, with: :record_not_found - - def index - issues = Boards::Issues::ListService.new(project, current_user, filter_params).execute - issues = issues.page(params[:page]) - - render json: issues.as_json( - only: [:iid, :title, :confidential], - include: { - assignee: { only: [:id, :name, :username], methods: [:avatar_url] }, - labels: { only: [:id, :title, :description, :color, :priority] } - }) - end - - def update - service = Boards::Issues::MoveService.new(project, current_user, move_params) - - if service.execute - head :ok - else - head :unprocessable_entity - end - end - - private - - def authorize_read_issue! - return render_403 unless can?(current_user, :read_issue, project) - end - - def authorize_update_issue! - return render_403 unless can?(current_user, :update_issue, project) - end - - def filter_params - params.merge(id: params[:list_id]) - end - - def move_params - params.permit(:id, :from_list_id, :to_list_id) - end - - def record_not_found(exception) - render json: { error: exception.message }, status: :not_found - end -end diff --git a/app/controllers/projects/board_lists_controller.rb b/app/controllers/projects/board_lists_controller.rb deleted file mode 100644 index 3cfb08d5822..00000000000 --- a/app/controllers/projects/board_lists_controller.rb +++ /dev/null @@ -1,65 +0,0 @@ -class Projects::BoardListsController < Projects::ApplicationController - respond_to :json - - before_action :authorize_admin_list! - - rescue_from ActiveRecord::RecordNotFound, with: :record_not_found - - def create - list = Boards::Lists::CreateService.new(project, current_user, list_params).execute - - if list.valid? - render json: list.as_json(only: [:id, :list_type, :position], methods: [:title], include: { label: { only: [:id, :title, :description, :color, :priority] } }) - else - render json: list.errors, status: :unprocessable_entity - end - end - - def update - service = Boards::Lists::MoveService.new(project, current_user, move_params) - - if service.execute - head :ok - else - head :unprocessable_entity - end - end - - def destroy - service = Boards::Lists::DestroyService.new(project, current_user, params) - - if service.execute - head :ok - else - head :unprocessable_entity - end - end - - def generate - service = Boards::Lists::GenerateService.new(project, current_user) - - if service.execute - render json: project.board.lists.label.as_json(only: [:id, :list_type, :position], methods: [:title], include: { label: { only: [:id, :title, :description, :color, :priority] } }) - else - head :unprocessable_entity - end - end - - private - - def authorize_admin_list! - return render_403 unless can?(current_user, :admin_list, project) - end - - def list_params - params.require(:list).permit(:label_id) - end - - def move_params - params.require(:list).permit(:position).merge(id: params[:id]) - end - - def record_not_found(exception) - render json: { error: exception.message }, status: :not_found - end -end diff --git a/app/controllers/projects/boards/issues_controller.rb b/app/controllers/projects/boards/issues_controller.rb new file mode 100644 index 00000000000..1847c3f2c25 --- /dev/null +++ b/app/controllers/projects/boards/issues_controller.rb @@ -0,0 +1,56 @@ +module Projects + module Boards + class IssuesController < Projects::ApplicationController + respond_to :json + + before_action :authorize_read_issue!, only: [:index] + before_action :authorize_update_issue!, only: [:update] + + rescue_from ActiveRecord::RecordNotFound, with: :record_not_found + + def index + issues = ::Boards::Issues::ListService.new(project, current_user, filter_params).execute + issues = issues.page(params[:page]) + + render json: issues.as_json( + only: [:iid, :title, :confidential], + include: { + assignee: { only: [:id, :name, :username], methods: [:avatar_url] }, + labels: { only: [:id, :title, :description, :color, :priority] } + }) + end + + def update + service = ::Boards::Issues::MoveService.new(project, current_user, move_params) + + if service.execute + head :ok + else + head :unprocessable_entity + end + end + + private + + def authorize_read_issue! + return render_403 unless can?(current_user, :read_issue, project) + end + + def authorize_update_issue! + return render_403 unless can?(current_user, :update_issue, project) + end + + def filter_params + params.merge(id: params[:list_id]) + end + + def move_params + params.permit(:id, :from_list_id, :to_list_id) + end + + def record_not_found(exception) + render json: { error: exception.message }, status: :not_found + end + end + end +end diff --git a/app/controllers/projects/boards/lists_controller.rb b/app/controllers/projects/boards/lists_controller.rb new file mode 100644 index 00000000000..255c0bf6e45 --- /dev/null +++ b/app/controllers/projects/boards/lists_controller.rb @@ -0,0 +1,69 @@ +module Projects + module Boards + class ListsController < Projects::ApplicationController + respond_to :json + + before_action :authorize_admin_list! + + rescue_from ActiveRecord::RecordNotFound, with: :record_not_found + + def create + list = ::Boards::Lists::CreateService.new(project, current_user, list_params).execute + + if list.valid? + render json: list.as_json(only: [:id, :list_type, :position], methods: [:title], include: { label: { only: [:id, :title, :description, :color, :priority] } }) + else + render json: list.errors, status: :unprocessable_entity + end + end + + def update + service = ::Boards::Lists::MoveService.new(project, current_user, move_params) + + if service.execute + head :ok + else + head :unprocessable_entity + end + end + + def destroy + service = ::Boards::Lists::DestroyService.new(project, current_user, params) + + if service.execute + head :ok + else + head :unprocessable_entity + end + end + + def generate + service = ::Boards::Lists::GenerateService.new(project, current_user) + + if service.execute + render json: project.board.lists.label.as_json(only: [:id, :list_type, :position], methods: [:title], include: { label: { only: [:id, :title, :description, :color, :priority] } }) + else + head :unprocessable_entity + end + end + + private + + def authorize_admin_list! + return render_403 unless can?(current_user, :admin_list, project) + end + + def list_params + params.require(:list).permit(:label_id) + end + + def move_params + params.require(:list).permit(:position).merge(id: params[:id]) + end + + def record_not_found(exception) + render json: { error: exception.message }, status: :not_found + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 3b17ed612bf..b74d6fa4464 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -857,14 +857,16 @@ Rails.application.routes.draw do end resource :board, only: [:show] do - resources :issues, only: [:update], controller: :board_issues + scope module: :boards do + resources :issues, only: [:update] - resources :lists, only: [:create, :update, :destroy], controller: :board_lists do - collection do - post :generate - end + resources :lists, only: [:create, :update, :destroy] do + collection do + post :generate + end - resources :issues, only: [:index], controller: :board_issues + resources :issues, only: [:index] + end end end diff --git a/spec/controllers/projects/board_issues_controller_spec.rb b/spec/controllers/projects/boards/issues_controller_spec.rb index a23f0fdf9c5..ac034ced930 100644 --- a/spec/controllers/projects/board_issues_controller_spec.rb +++ b/spec/controllers/projects/boards/issues_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Projects::BoardIssuesController do +describe Projects::Boards::IssuesController do let(:project) { create(:project_with_board) } let(:user) { create(:user) } diff --git a/spec/controllers/projects/board_lists_controller_spec.rb b/spec/controllers/projects/boards/lists_controller_spec.rb index 4b824164f69..3d7d3588165 100644 --- a/spec/controllers/projects/board_lists_controller_spec.rb +++ b/spec/controllers/projects/boards/lists_controller_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Projects::BoardListsController do +describe Projects::Boards::ListsController do let(:project) { create(:project_with_board) } let(:board) { project.board } let(:user) { create(:user) } |