From b243800f5a70b80209833cce3d3fa071a9628dc2 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Tue, 19 Jul 2022 16:29:28 +0200 Subject: [PATCH] (bug) As admin, unable to create a new member (#374) --- CHANGELOG.md | 1 + app/controllers/api/members_controller.rb | 2 +- app/services/members/members_service.rb | 20 +++++++++++++------- test/integration/members/as_admin_test.rb | 1 + 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9ff3f58c..d6feba265 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Fix a bug: unable to book a space's slot with an existing reservation - Fix a bug: Unable to import accounts from SSO when the transformation modal was opened but leaved empty - Fix a bug: Unable to change the group of a user +- Fix a bug: As admin, unable to create a new member (#374) ## v5.4.12 2022 July 06 diff --git a/app/controllers/api/members_controller.rb b/app/controllers/api/members_controller.rb index ad314c520..5ca7f455c 100644 --- a/app/controllers/api/members_controller.rb +++ b/app/controllers/api/members_controller.rb @@ -40,7 +40,7 @@ class API::MembersController < API::ApiController def create authorize :user, :create_member? - @member = User.new(user_params.permit!) + @member = User.new(Members::MembersService.handle_organization(user_params.permit!)) members_service = Members::MembersService.new(@member) if members_service.create(current_user, user_params) diff --git a/app/services/members/members_service.rb b/app/services/members/members_service.rb index 9ed5799c3..0adacf571 100644 --- a/app/services/members/members_service.rb +++ b/app/services/members/members_service.rb @@ -36,13 +36,7 @@ class Members::MembersService end end - if params[:invoicing_profile_attributes] && params[:invoicing_profile_attributes][:organization] - if params[:invoicing_profile_attributes][:organization] == 'false' - params[:invoicing_profile_attributes].reject! { |p| %w[organization_attributes organization].include?(p) } - else - params[:invoicing_profile_attributes].reject! { |p| p == 'organization' } - end - end + MembersService.handle_organization(params) not_complete = member.need_completion? up_result = member.update(params) @@ -101,6 +95,18 @@ class Members::MembersService is_updated end + def self.handle_organization(params) + return params unless params[:invoicing_profile_attributes] && params[:invoicing_profile_attributes][:organization] + + if params[:invoicing_profile_attributes][:organization] == 'false' + params[:invoicing_profile_attributes].reject! { |p| %w[organization_attributes organization].include?(p) } + else + params[:invoicing_profile_attributes].reject! { |p| p == 'organization' } + end + + params + end + private def notify_user_profile_complete(previous_state) diff --git a/test/integration/members/as_admin_test.rb b/test/integration/members/as_admin_test.rb index 775d2719d..8a2d08a7e 100644 --- a/test/integration/members/as_admin_test.rb +++ b/test/integration/members/as_admin_test.rb @@ -25,6 +25,7 @@ class MembersTest < ActionDispatch::IntegrationTest phone: '0485232145' }, invoicing_profile_attributes: { + organization: false, address_attributes: { address: '21 grand rue, 73110 Bourget-en-Huile' }