From f6a2d91d61c311ceff292dd210b5ed54743b6eed Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 1 Feb 2021 17:21:29 +0500 Subject: [PATCH] Fix CC issues --- .../v1/domains/admin_contacts_controller.rb | 23 ++------------ .../v1/domains/base_contacts_controller.rb | 31 +++++++++++++++++++ .../repp/v1/domains/contacts_controller.rb | 25 ++------------- app/models/admin_domain_contact.rb | 4 +++ app/models/concerns/contact/identical.rb | 4 +-- 5 files changed, 41 insertions(+), 46 deletions(-) create mode 100644 app/controllers/repp/v1/domains/base_contacts_controller.rb diff --git a/app/controllers/repp/v1/domains/admin_contacts_controller.rb b/app/controllers/repp/v1/domains/admin_contacts_controller.rb index 035cd36fd..2e9a285eb 100644 --- a/app/controllers/repp/v1/domains/admin_contacts_controller.rb +++ b/app/controllers/repp/v1/domains/admin_contacts_controller.rb @@ -1,21 +1,9 @@ module Repp module V1 module Domains - class AdminContactsController < BaseController - before_action :set_current_contact, only: [:update] - before_action :set_new_contact, only: [:update] - - def set_current_contact - @current_contact = current_user.registrar.contacts.find_by!(code: contact_params[:current_contact_id]) - end - - def set_new_contact - @new_contact = current_user.registrar.contacts.find_by!(code: params[:new_contact_id]) - end - + class AdminContactsController < BaseContactsController def update - @epp_errors ||= [] - @epp_errors << { code: 2304, msg: 'New contact must be valid' } if @new_contact.invalid? + super unless @new_contact.identical_to?(@current_contact) @epp_errors << { code: 2304, msg: 'Admin contacts must be identical' } @@ -27,13 +15,6 @@ module Repp @response = { affected_domains: affected, skipped_domains: skipped } render_success(data: @response) end - - private - - def contact_params - params.require(%i[current_contact_id new_contact_id]) - params.permit(:current_contact_id, :new_contact_id) - end end end end diff --git a/app/controllers/repp/v1/domains/base_contacts_controller.rb b/app/controllers/repp/v1/domains/base_contacts_controller.rb new file mode 100644 index 000000000..b601c5313 --- /dev/null +++ b/app/controllers/repp/v1/domains/base_contacts_controller.rb @@ -0,0 +1,31 @@ +module Repp + module V1 + module Domains + class BaseContactsController < BaseController + before_action :set_current_contact, only: [:update] + before_action :set_new_contact, only: [:update] + + def set_current_contact + @current_contact = current_user.registrar.contacts + .find_by!(code: contact_params[:current_contact_id]) + end + + def set_new_contact + @new_contact = current_user.registrar.contacts.find_by!(code: params[:new_contact_id]) + end + + def update + @epp_errors ||= [] + @epp_errors << { code: 2304, msg: 'New contact must be valid' } if @new_contact.invalid? + end + + private + + def contact_params + params.require(%i[current_contact_id new_contact_id]) + params.permit(:current_contact_id, :new_contact_id) + end + end + end + end +end diff --git a/app/controllers/repp/v1/domains/contacts_controller.rb b/app/controllers/repp/v1/domains/contacts_controller.rb index 75404e0c6..131615570 100644 --- a/app/controllers/repp/v1/domains/contacts_controller.rb +++ b/app/controllers/repp/v1/domains/contacts_controller.rb @@ -1,23 +1,9 @@ module Repp module V1 module Domains - class ContactsController < BaseController - before_action :set_current_contact, only: [:update] - before_action :set_new_contact, only: [:update] - - def set_current_contact - @current_contact = current_user.registrar.contacts.find_by!( - code: contact_params[:current_contact_id] - ) - end - - def set_new_contact - @new_contact = current_user.registrar.contacts.find_by!(code: params[:new_contact_id]) - end - + class ContactsController < BaseContactsController def update - @epp_errors ||= [] - @epp_errors << { code: 2304, msg: 'New contact must be valid' } if @new_contact.invalid? + super if @new_contact == @current_contact @epp_errors << { code: 2304, msg: 'New contact must be different from current' } @@ -29,13 +15,6 @@ module Repp @response = { affected_domains: affected, skipped_domains: skipped } render_success(data: @response) end - - private - - def contact_params - params.require(%i[current_contact_id new_contact_id]) - params.permit(:current_contact_id, :new_contact_id) - end end end end diff --git a/app/models/admin_domain_contact.rb b/app/models/admin_domain_contact.rb index d84ac7793..7ccf3efcb 100644 --- a/app/models/admin_domain_contact.rb +++ b/app/models/admin_domain_contact.rb @@ -1,4 +1,6 @@ class AdminDomainContact < DomainContact + # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/MethodLength def self.replace(current_contact, new_contact) affected_domains = [] skipped_domains = [] @@ -19,4 +21,6 @@ class AdminDomainContact < DomainContact end [affected_domains.sort, skipped_domains.sort] end + # rubocop:enable Metrics/AbcSize + # rubocop:enable Metrics/MethodLength end diff --git a/app/models/concerns/contact/identical.rb b/app/models/concerns/contact/identical.rb index 1a5516bc5..5327d1704 100644 --- a/app/models/concerns/contact/identical.rb +++ b/app/models/concerns/contact/identical.rb @@ -16,7 +16,7 @@ module Concerns::Contact::Identical ident ident_type ident_country_code - ] + ].freeze private_constant :IDENTIFIABLE_ATTRIBUTES @@ -29,7 +29,7 @@ module Concerns::Contact::Identical def identical_to?(contact) IDENTICAL_ATTRIBUTES.all? do |attribute| - self.attributes[attribute] == contact.attributes[attribute] + attributes[attribute] == contact.attributes[attribute] end end