Skip to content

Commit

Permalink
Fix CC issues
Browse files Browse the repository at this point in the history
  • Loading branch information
yulgolem committed May 6, 2021
1 parent d4dc39b commit 5e8e6da
Show file tree
Hide file tree
Showing 15 changed files with 76 additions and 58 deletions.
4 changes: 3 additions & 1 deletion app/controllers/admin/billing/prices_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ def price_params
]

allowed = params.require(:price).permit(*allowed_params)
allowed[:duration] = ActiveSupport::Duration.build(allowed[:duration].to_i) if allowed[:duration]
if allowed[:duration]
allowed[:duration] = ActiveSupport::Duration.build(allowed[:duration].to_i)
end
allowed
end

Expand Down
18 changes: 13 additions & 5 deletions app/controllers/epp/base_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,12 @@ def requires(*selectors)
else
missing = el.present? ? el.text.blank? : true
end
next unless missing

epp_errors.add(:epp_errors,
code: '2003',
message: I18n.t('errors.messages.required_parameter_missing', key: "#{full_selector} [#{attr}]")) if missing
message: I18n.t('errors.messages.required_parameter_missing',
key: "#{full_selector} [#{attr}]"))
end

missing ? false : el # return last selector if it was present
Expand All @@ -185,7 +188,8 @@ def requires_attribute(element_selector, attribute_selector, options)
unless attribute
epp_errors.add(:epp_errors,
code: '2003',
msg: I18n.t('errors.messages.required_parameter_missing', key: attribute_selector))
msg: I18n.t('errors.messages.required_parameter_missing',
key: attribute_selector))
return
end

Expand Down Expand Up @@ -221,7 +225,8 @@ def exactly_one_of(*selectors)

epp_errors.add(:epp_errors,
code: '2306',
msg: I18n.t(:exactly_one_parameter_required, params: full_selectors.join(' OR ')))
msg: I18n.t(:exactly_one_parameter_required,
params: full_selectors.join(' OR ')))
end

def mutually_exclusive(*selectors)
Expand All @@ -230,7 +235,8 @@ def mutually_exclusive(*selectors)

epp_errors.add(:epp_errors,
code: '2306',
msg: I18n.t(:mutally_exclusive_params, params: full_selectors.join(', ')))
msg: I18n.t(:mutally_exclusive_params,
params: full_selectors.join(', ')))
end

def optional(selector, *validations)
Expand Down Expand Up @@ -273,9 +279,11 @@ def create_full_selectors(*selectors)

def xml_attrs_present?(ph, attributes) # TODO: THIS IS DEPRECATED AND WILL BE REMOVED IN FUTURE
attributes.each do |x|
next if has_attribute(ph, x)

epp_errors.add(:epp_errors,
code: '2003',
msg: I18n.t('errors.messages.required_parameter_missing', key: x.last)) unless has_attribute(ph, x)
msg: I18n.t('errors.messages.required_parameter_missing', key: x.last))
end
epp_errors.empty?
end
Expand Down
6 changes: 2 additions & 4 deletions app/controllers/epp/contacts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,7 @@ def contact_org_disabled

epp_errors.add(:epp_errors,
code: '2306',
msg: "#{I18n.t(:contact_org_error)}: postalInfo > org [org]"
)
msg: "#{I18n.t(:contact_org_error)}: postalInfo > org [org]")
end

def fax_disabled
Expand All @@ -190,8 +189,7 @@ def status_editing_disabled
return true if params[:parsed_frame].css('status').empty?
epp_errors.add(:epp_errors,
code: '2306',
msg: "#{I18n.t(:client_side_status_editing_error)}: status [status]"
)
msg: "#{I18n.t(:client_side_status_editing_error)}: status [status]")
end

def address_given?
Expand Down
3 changes: 1 addition & 2 deletions app/controllers/epp/domains_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,7 @@ def status_editing_disabled
return true if params[:parsed_frame].css('status').empty?
epp_errors.add(:epp_errors,
code: '2306',
msg: "#{I18n.t(:client_side_status_editing_error)}: status [status]"
)
msg: "#{I18n.t(:client_side_status_editing_error)}: status [status]")
end

def check_client_hold
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/epp/errors_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ class ErrorsController < BaseController
skip_authorization_check

def error
epp_errors.add(:epp_errors, code: params[:code], msg: params[:msg] )
epp_errors.add(:epp_errors, code: params[:code], msg: params[:msg])
render_epp_response '/epp/error'
end

def command_handler
epp_errors.add(:epp_errors, code: '2000', msg: 'Unknown command' )
epp_errors.add(:epp_errors, code: '2000', msg: 'Unknown command')
render_epp_response '/epp/error'
end
end
Expand Down
21 changes: 14 additions & 7 deletions app/controllers/epp/sessions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ def login

server_md5 = Certificate.parse_md_from_string(File.read(ENV['cert_path']))
if client_md5 != server_md5
msg = 'Authentication error; server closing connection (certificate is not valid)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (certificate is not valid)',
msg: msg,
code: '2501')

success = false
Expand All @@ -31,49 +32,55 @@ def login
if !Rails.env.development? && (!webclient_request && @api_user)
unless @api_user.pki_ok?(request.env['HTTP_SSL_CLIENT_CERT'],
request.env['HTTP_SSL_CLIENT_S_DN_CN'])
msg = 'Authentication error; server closing connection (certificate is not valid)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (certificate is not valid)',
msg: msg,
code: '2501')

success = false
end
end

if success && !@api_user
msg = 'Authentication error; server closing connection (API user not found)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (API user not found)',
msg: msg,
code: '2501')

success = false
end

if success && !@api_user.try(:active)
msg = 'Authentication error; server closing connection (API user is not active)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (API user is not active)',
msg: msg,
code: '2501')

success = false
end

if success && @api_user.cannot?(:create, :epp_login)
msg = 'Authentication error; server closing connection (API user does not have epp role)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (API user does not have epp role)',
msg: msg,
code: '2501')

success = false
end

if success && !ip_white?
msg = 'Authentication error; server closing connection (IP is not whitelisted)'
epp_errors.add(:epp_errors,
msg: 'Authentication error; server closing connection (IP is not whitelisted)',
msg: msg,
code: '2501')

success = false
end

if success && EppSession.limit_reached?(@api_user.registrar)
msg = 'Session limit exceeded; server closing connection (connection limit reached)'
epp_errors.add(:epp_errors,
msg: 'Session limit exceeded; server closing connection (connection limit reached)',
msg: msg,
code: '2502')

success = false
Expand Down
6 changes: 3 additions & 3 deletions app/controllers/repp/v1/base_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def epp_errors
@epp_errors ||= ActiveModel::Errors.new(self)
end

def handle_errors(obj = nil, update: false)
def handle_errors(obj = nil)
@epp_errors ||= ActiveModel::Errors.new(self)

if obj
Expand All @@ -78,8 +78,8 @@ def render_epp_error(status = :bad_request, data = {})
@epp_errors ||= ActiveModel::Errors.new(self)
@epp_errors.add(:epp_errors, msg: 'Command failed', code: '2304') if data != {}

error_options = @epp_errors.errors.uniq.
select { |error| error.options[:code].present? }[0].options
error_options = @epp_errors.errors.uniq
.select { |error| error.options[:code].present? }[0].options

@response = { code: error_options[:code].to_i, message: error_options[:msg], data: data }
render(json: @response, status: status)
Expand Down
10 changes: 5 additions & 5 deletions app/controllers/repp/v1/domains/base_contacts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ def set_new_contact

def update
@epp_errors ||= ActiveModel::Errors.new(self)
if @new_contact.invalid?
@epp_errors.add(:epp_errors,
msg: 'New contact must be valid',
code: '2304')
end
return unless @new_contact.invalid?

@epp_errors.add(:epp_errors,
msg: 'New contact must be valid',
code: '2304')
end

private
Expand Down
16 changes: 8 additions & 8 deletions app/controllers/repp/v1/domains/renews_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def bulk_renew
return render_success(data: { updated_domains: @domains.map(&:name) }) if renew.valid?

msg = renew.errors.keys.map { |k, _v| renew.errors[k] }.join(', ')
@epp_errors.add(:epp_errors, msg: msg , code: '2002')
@epp_errors.add(:epp_errors, msg: msg, code: '2002')
handle_errors
end

Expand All @@ -45,7 +45,7 @@ def validate_renew_period
periods = Depp::Domain::PERIODS.map { |p| p[1] }
return if periods.include? bulk_renew_params[:renew_period]

@epp_errors.add(:epp_errors, msg: 'Invalid renew period' , code: '2005')
@epp_errors.add(:epp_errors, msg: 'Invalid renew period', code: '2005')
end

def select_renewable_domains
Expand All @@ -54,7 +54,7 @@ def select_renewable_domains
if bulk_renew_params[:domains].instance_of?(Array)
@domains = bulk_renew_domains
else
@epp_errors.add(:epp_errors, msg: 'Domains attribute must be an array' , code: '2005')
@epp_errors.add(:epp_errors, msg: 'Domains attribute must be an array', code: '2005')
end

return handle_errors if @epp_errors.any?
Expand All @@ -78,11 +78,11 @@ def bulk_renew_domains
bulk_renew_params[:domains].each do |idn|
domain = Epp::Domain.find_by(name: idn)
domains << domain if domain
unless domain
@epp_errors.add(:epp_errors,
msg: "Object does not exist: #{idn}",
code: '2304')
end
next if domain

@epp_errors.add(:epp_errors,
msg: "Object does not exist: #{idn}",
code: '2304')
end

domains
Expand Down
4 changes: 3 additions & 1 deletion app/controllers/repp/v1/domains_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,9 @@ def validate_registrar_authorization
return if @domain.registrar == current_user.registrar
return if @domain.transfer_code.eql?(request.headers['Auth-Code'])

@epp_errors.add(:epp_errors, code: 2202, msg: I18n.t('errors.messages.epp_authorization_error'))
@epp_errors.add(:epp_errors,
code: 2202,
msg: I18n.t('errors.messages.epp_authorization_error'))
handle_errors
end

Expand Down
6 changes: 2 additions & 4 deletions app/interactions/domains/check_balance/mass.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ def execute
def calculate_total_price
@total_price = 0
domains.each do |domain|
task = Domains::CheckBalance::SingleDomain.run(domain: domain,
operation: 'renew',
period: period,
unit: unit)
task = Domains::CheckBalance::SingleDomain.run(domain: domain, operation: 'renew',
period: period, unit: unit)

if task.valid?
@total_price += task.result
Expand Down
18 changes: 9 additions & 9 deletions app/models/billing/price.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ def self.durations
'6 months' => 6.months,
'9 months' => 9.months,
'1 year' => 1.year,
'2 years'=> 2.years,
'3 years'=> 3.years,
'4 years'=> 4.years,
'5 years'=> 5.years,
'6 years'=> 6.years,
'7 years'=> 7.years,
'8 years'=> 8.years,
'9 years'=> 9.years,
'10 years'=> 10.years,
'2 years' => 2.years,
'3 years' => 3.years,
'4 years' => 4.years,
'5 years' => 5.years,
'6 years' => 6.years,
'7 years' => 7.years,
'8 years' => 8.years,
'9 years' => 9.years,
'10 years' => 10.years,
}
end

Expand Down
15 changes: 9 additions & 6 deletions app/models/concerns/epp_errors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def construct_epp_errors
epp_errors.import parent_error
end
end
epp_errors.each { |epp_error| errors.import epp_error}
epp_errors.each { |epp_error| errors.import epp_error }
errors
end

Expand All @@ -49,13 +49,16 @@ def collect_child_errors(attr)
multi = [:has_and_belongs_to_many, :has_many]

epp_errors = ActiveModel::Errors.new(self)
send(attr).each do |x|
x.errors.each do |error|
x.collect_parent_errors(error.attribute, error.message).each do |parent_error|
epp_errors.import parent_error

if multi.include?(macro)
send(attr).each do |x|
x.errors.each do |error|
x.collect_parent_errors(error.attribute, error.message).each do |parent_error|
epp_errors.import parent_error
end
end
end
end if multi.include?(macro)
end

epp_errors
end
Expand Down
2 changes: 1 addition & 1 deletion app/models/invoice/pdf_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def as_pdf
private

def invoice_html
ApplicationController.render(template: 'invoice/pdf', assigns: { invoice: invoice } )
ApplicationController.render(template: 'invoice/pdf', assigns: { invoice: invoice })
end
end
end
1 change: 1 addition & 0 deletions app/views/epp/error.xml.builder
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ xml.epp_head do
@errors.each do |error|
x = error&.options
next if x.empty? || x == { value: nil }

xml.result('code' => x[:code]) do
xml.msg(x[:msg], 'lang' => 'en')
model_name = resource ? resource.model_name.singular.sub('epp_','') : controller.controller_name.singularize
Expand Down

0 comments on commit 5e8e6da

Please sign in to comment.