diff --git a/app/controllers/concerns/access_request_actions.rb b/app/controllers/concerns/access_request_actions.rb index 1b0a1fe308154a9b70044289cec0ba91ccf8f0e8..c4d22749d6a8a5b9874a6031a4eb1d2a9dd7f963 100644 --- a/app/controllers/concerns/access_request_actions.rb +++ b/app/controllers/concerns/access_request_actions.rb @@ -8,7 +8,7 @@ module AccessRequestActions notice: 'Your request for access has been queued for review.' end - def approve + def approve_access_request @member = access_requestable_resource.public_send(member_entity_name.pluralize).request.find(params[:id]) return render_403 unless can?(current_user, :"update_#{member_entity_name}", @member) diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index 6599c59d1c9325d1a187fbc3dfa015431dd89529..bd84b8b239fdbbdf34e659126aa2aaf35842025c 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -53,9 +53,9 @@ module MembersHelper def approve_request_member_path(member) case member.source when Project - approve_namespace_project_project_member_path(member.source.namespace, member.source, member) + approve_access_request_namespace_project_project_member_path(member.source.namespace, member.source, member) when Group - approve_group_group_member_path(member.source, member) + approve_access_request_group_group_member_path(member.source, member) else raise ArgumentError.new('Unknown object class') end diff --git a/config/routes.rb b/config/routes.rb index 2eccb19deff2c8e3bf1bebd53e4acca6f98d6a9b..f5574fb99a57cd64cf80af04db21c484c7e60822 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,7 +32,7 @@ Rails.application.routes.draw do concern :access_requestable do post :request_access, on: :collection - post :approve_access_request_access_request, on: :member + post :approve_access_request, on: :member end namespace :ci do @@ -414,16 +414,9 @@ Rails.application.routes.draw do end scope module: :groups do - resources :group_members, only: [:index, :create, :update, :destroy] do - collection do - delete :leave - post :request_access - end - - member do - post :resend_invite - post :approve - end + resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do + post :resend_invite, on: :member + delete :leave, on: :collection end resource :avatar, only: [:destroy] @@ -777,10 +770,9 @@ Rails.application.routes.draw do end end - resources :project_members, except: [:new, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ } do + resources :project_members, except: [:new, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ }, concerns: :access_requestable do collection do delete :leave - post :request_access # Used for import team # from another project @@ -790,7 +782,6 @@ Rails.application.routes.draw do member do post :resend_invite - post :approve end end diff --git a/spec/helpers/members_helper_spec.rb b/spec/helpers/members_helper_spec.rb index f1782146241d8286e82fa10691d9757ae7ef3162..c2f10e1db75deb9c6d3f968ab7cb5c08a032026b 100644 --- a/spec/helpers/members_helper_spec.rb +++ b/spec/helpers/members_helper_spec.rb @@ -72,8 +72,8 @@ describe MembersHelper do let(:project_member) { create(:project_member) } let(:group_member) { create(:group_member) } - it { expect(approve_request_member_path(project_member)).to eq approve_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member) } - it { expect(approve_request_member_path(group_member)).to eq approve_group_group_member_path(group_member.source, group_member) } + it { expect(approve_request_member_path(project_member)).to eq approve_access_request_namespace_project_project_member_path(project_member.source.namespace, project_member.source, project_member) } + it { expect(approve_request_member_path(group_member)).to eq approve_access_request_group_group_member_path(group_member.source, group_member) } it { expect { approve_request_member_path(double(:member, source: 'foo')) }.to raise_error ArgumentError, 'Unknown object class' } end