From 438f77a9816c7f5545107e7f7b53b43e39cccc1a Mon Sep 17 00:00:00 2001 From: Stas Date: Tue, 26 Jan 2016 18:12:31 +0200 Subject: [PATCH 01/14] 105842700-roles_sort_contact_part --- app/views/registrant/contacts/partials/_domains.haml | 2 +- app/views/registrant/domains/partials/_owner.haml | 2 +- app/views/registrant/domains/show.haml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/registrant/contacts/partials/_domains.haml b/app/views/registrant/contacts/partials/_domains.haml index d0180532d..01b52c415 100644 --- a/app/views/registrant/contacts/partials/_domains.haml +++ b/app/views/registrant/contacts/partials/_domains.haml @@ -18,7 +18,7 @@ %th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name %th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name %th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to - %th{class: 'col-xs-3'}= t(:roles) + %th{class: 'col-xs-3'}=custom_sort_link t(:roles), :roles %tbody - domains.each do |x| %tr diff --git a/app/views/registrant/domains/partials/_owner.haml b/app/views/registrant/domains/partials/_owner.haml index a7c678d56..f0662fd97 100644 --- a/app/views/registrant/domains/partials/_owner.haml +++ b/app/views/registrant/domains/partials/_owner.haml @@ -4,7 +4,7 @@ .panel-body %dl.dl-horizontal %dt= t(:name) - %dd= link_to(@domain.registrant, [:registrar, @domain.registrant]) + %dd= link_to(@domain.registrant, [:registrant, @domain.registrant]) %dt= t(:id) %dd= @domain.registrant_code diff --git a/app/views/registrant/domains/show.haml b/app/views/registrant/domains/show.haml index 0c1ceb48e..746b1d8d5 100644 --- a/app/views/registrant/domains/show.haml +++ b/app/views/registrant/domains/show.haml @@ -3,6 +3,7 @@ .row .col-md-6= render 'registrant/domains/partials/general' + .col-md-6= render 'registrant/domains/partials/owner' .row .col-md-12= render 'registrant/domains/partials/tech_contacts' .row From be8aa474f87ac58d2c6e41054401171d1d62ffee Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Wed, 27 Jan 2016 13:21:45 +0200 Subject: [PATCH 02/14] Story#105842700 - Set security --- app/controllers/registrant/contacts_controller.rb | 14 ++++++++++++-- app/controllers/registrant/domains_controller.rb | 7 ++----- app/models/business_registry_cache.rb | 9 +++++++-- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index d3a0ddff8..5ebf396ae 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -1,8 +1,18 @@ class Registrant::ContactsController < RegistrantController def show - @contact = Contact.find(params[:id]) + @contact = contacts.find(params[:id]) authorize! :read, @contact - @contact.valid? + end + + def contacts + ident_cc, ident = @current_user.registrant_ident.to_s.split '-' + begin + BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_contacts + rescue Soap::Arireg::NotAvailableError => error + flash[:notice] = I18n.t(error.json[:message]) + Rails.logger.fatal("[EXCEPTION] #{error.to_s}") + Contact.none + end end end \ No newline at end of file diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb index bf7ce37bb..0d8ffa5c5 100644 --- a/app/controllers/registrant/domains_controller.rb +++ b/app/controllers/registrant/domains_controller.rb @@ -11,15 +11,12 @@ class Registrant::DomainsController < RegistrantController end def show - @domain = Domain.find(params[:id]) - if !(domains.include?(@domain) || @domain.valid?) - redirect_to registrant_domains_path - end + @domain = domains.find(params[:id]) authorize! :read, @domain end def set_domain - @domain = Domain.find(params[:id]) + @domain = domains.find(params[:id]) end def download_list diff --git a/app/models/business_registry_cache.rb b/app/models/business_registry_cache.rb index 5ca1e002c..cab39e7ee 100644 --- a/app/models/business_registry_cache.rb +++ b/app/models/business_registry_cache.rb @@ -22,11 +22,16 @@ class BusinessRegistryCache < ActiveRecord::Base # 1. load domains by business # 2. load domains by person + def associated_contacts + contact_ids = Contact.where(ident_type: 'org', ident: associated_businesses, ident_country_code: 'EE').pluck(:id) + contact_ids += Contact.where(ident_type: 'priv', ident: ident, ident_country_code: ident_country_code).pluck(:id) + contact_ids + end + def associated_domains domains = [] - contact_ids = Contact.where(ident_type: 'org', ident: associated_businesses, ident_country_code: 'EE').pluck(:id) - contact_ids += Contact.where(ident_type: 'priv', ident: ident, ident_country_code: ident_country_code).pluck(:id) + contact_ids = associated_contacts unless contact_ids.blank? domains = DomainContact.distinct.where(contact_id: contact_ids).pluck(:domain_id) From a2f390aa0f08d8a4e96bdc0ad70956f1cc3dbb59 Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 27 Jan 2016 16:54:59 +0200 Subject: [PATCH 03/14] 105842700-contact_search_fix --- app/controllers/registrant/contacts_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index 5ebf396ae..dfef2723a 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -1,7 +1,7 @@ class Registrant::ContactsController < RegistrantController def show - @contact = contacts.find(params[:id]) + @contact = Contact.where(id: contacts).find(params[:id]) authorize! :read, @contact end @@ -12,7 +12,7 @@ class Registrant::ContactsController < RegistrantController rescue Soap::Arireg::NotAvailableError => error flash[:notice] = I18n.t(error.json[:message]) Rails.logger.fatal("[EXCEPTION] #{error.to_s}") - Contact.none + [] end end end \ No newline at end of file From 404e52faf6b01f42e2f79c9836358b94765b2a5c Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 10 Feb 2016 16:03:53 +0200 Subject: [PATCH 04/14] 105842700-statuses_and_domains --- .../registrants/partials/_domains.haml | 30 +++++++++++++++++++ .../registrants/partials/_statuses.haml | 21 +++++++++++++ app/views/registrant/registrants/show.haml | 7 ++++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 app/views/registrant/registrants/partials/_domains.haml create mode 100644 app/views/registrant/registrants/partials/_statuses.haml diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml new file mode 100644 index 000000000..d0180532d --- /dev/null +++ b/app/views/registrant/registrants/partials/_domains.haml @@ -0,0 +1,30 @@ +- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params) +#contacts.panel.panel-default + .panel-heading + .pull-left + = t(:domains) + .pull-right + = form_tag request.path, method: :get do + = select_tag :domain_filter, options_for_select(%w(Registrant AdminDomainContact TechDomainContact), selected: params[:domain_filter]), + include_blank: true, class: 'form-control2 selectize2' + %button.btn.btn-primary + %span.glyphicon.glyphicon-search + .clearfix + + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name + %th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name + %th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to + %th{class: 'col-xs-3'}= t(:roles) + %tbody + - domains.each do |x| + %tr + %td= link_to(x.name, [:registrant, x]) + %td= link_to(x.registrar, [:registrant, x.registrar]) + %td= l(x.valid_to, format: :short) + %td= x.roles.join(", ") + += paginate domains, param_name: :domain_page \ No newline at end of file diff --git a/app/views/registrant/registrants/partials/_statuses.haml b/app/views/registrant/registrants/partials/_statuses.haml new file mode 100644 index 000000000..c39075754 --- /dev/null +++ b/app/views/registrant/registrants/partials/_statuses.haml @@ -0,0 +1,21 @@ +- panel_class = contact.errors.messages[:statuses] ? 'panel-danger' : 'panel-default' +#contact_statuses.panel{class: panel_class} + .panel-heading.clearfix + = t(:statuses) + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-6'}= t(:status) + %th{class: 'col-xs-6'}= t(:notes) + %tbody + - contact.statuses.each do |status| + %tr + %td= status + %td= contact.status_notes[status] + + - if contact.errors.messages[:statuses] + %tfoot + - @domain.errors.messages[:statuses].each do |s| + %tr + %td{colspan: 4}= s diff --git a/app/views/registrant/registrants/show.haml b/app/views/registrant/registrants/show.haml index 5b2a527ca..3aa458973 100644 --- a/app/views/registrant/registrants/show.haml +++ b/app/views/registrant/registrants/show.haml @@ -72,4 +72,9 @@ %dd= @contact.state %dt= t(:country) - %dd= @contact.country \ No newline at end of file + %dd= @contact.country + +.row + .col-md-12= render 'registrant/registrants/partials/statuses', contact: @contact +.row + .col-md-12= render 'registrant/registrants/partials/domains', contact: @contact \ No newline at end of file From 81a19983a7888228d76684d15874a330b131089b Mon Sep 17 00:00:00 2001 From: Stas Date: Fri, 12 Feb 2016 12:34:17 +0200 Subject: [PATCH 05/14] 105842700-api_link_delete --- app/views/registrant/contacts/partials/_general.haml | 4 ++-- app/views/registrant/registrants/show.haml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/registrant/contacts/partials/_general.haml b/app/views/registrant/contacts/partials/_general.haml index 36192cb2c..131501232 100644 --- a/app/views/registrant/contacts/partials/_general.haml +++ b/app/views/registrant/contacts/partials/_general.haml @@ -31,13 +31,13 @@ %dd = l(@contact.created_at, format: :short) by - = creator_link(@contact) + = @contact.name %dt= t(:updated) %dd = l(@contact.updated_at, format: :short) by - = updator_link(@contact) + = @contact.name %dt= t(:registrar) %dd diff --git a/app/views/registrant/registrants/show.haml b/app/views/registrant/registrants/show.haml index 3aa458973..d01dba82e 100644 --- a/app/views/registrant/registrants/show.haml +++ b/app/views/registrant/registrants/show.haml @@ -35,13 +35,13 @@ %dd = l(@contact.created_at, format: :short) by - = creator_link(@contact) + = @contact.name %dt= t(:updated) %dd = l(@contact.updated_at, format: :short) by - = updator_link(@contact) + = @contact.name %dt= t(:registrar) %dd From e077ba7ee8f00da1353e55b2877fb75696802f04 Mon Sep 17 00:00:00 2001 From: Stas Date: Mon, 15 Feb 2016 12:38:05 +0200 Subject: [PATCH 06/14] 105842700-contact_and_domain_query_change --- .../registrant/contacts_controller.rb | 5 ++-- app/models/business_registry_cache.rb | 12 ++++++--- app/models/contact.rb | 25 +++++++++++++++++++ .../registrants/partials/_domains.haml | 2 +- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index dfef2723a..fd4d32a37 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -1,14 +1,15 @@ class Registrant::ContactsController < RegistrantController def show - @contact = Contact.where(id: contacts).find(params[:id]) + @contact = Contact.where(id: contacts).find_by(id: params[:id]) + @current_user = current_user authorize! :read, @contact end def contacts ident_cc, ident = @current_user.registrant_ident.to_s.split '-' begin - BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_contacts + DomainContact.where(domain_id: BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_domain_ids).pluck(:contact_id) rescue Soap::Arireg::NotAvailableError => error flash[:notice] = I18n.t(error.json[:message]) Rails.logger.fatal("[EXCEPTION] #{error.to_s}") diff --git a/app/models/business_registry_cache.rb b/app/models/business_registry_cache.rb index cab39e7ee..f73a5cfe8 100644 --- a/app/models/business_registry_cache.rb +++ b/app/models/business_registry_cache.rb @@ -28,16 +28,20 @@ class BusinessRegistryCache < ActiveRecord::Base contact_ids end - def associated_domains - domains = [] + def associated_domain_ids + domain_ids = [] contact_ids = associated_contacts unless contact_ids.blank? - domains = DomainContact.distinct.where(contact_id: contact_ids).pluck(:domain_id) + domain_ids = DomainContact.distinct.where(contact_id: contact_ids).pluck(:domain_id) end - Domain.includes(:registrar, :registrant).where(id: domains) + domain_ids + end + + def associated_domains + Domain.includes(:registrar, :registrant).where(id: associated_domain_ids) end class << self diff --git a/app/models/contact.rb b/app/models/contact.rb index 1d6f069e5..035fedf59 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -407,6 +407,31 @@ class Contact < ActiveRecord::Base domains end + def all_registrant_domains(page: nil, per: nil, params: {}, registrant: nil) + + if registrant + sorts = params.fetch(:sort, {}).first || [] + sort = Domain.column_names.include?(sorts.first) ? sorts.first : "valid_to" + order = {"asc"=>"desc", "desc"=>"asc"}[sorts.second] || "desc" + + domain_ids = DomainContact.distinct.where(contact_id: registrant.id).pluck(:domain_id) + + domains = Domain.where(id: domain_ids).includes(:registrar).page(page).per(per) + if sorts.first == "registrar_name".freeze + domains = domains.includes(:registrar).where.not(registrars: {id: nil}).order("registrars.name #{order} NULLS LAST") + else + domains = domains.order("#{sort} #{order} NULLS LAST") + end + + domain_c = Hash.new([]) + registrant_domains.where(id: domains.map(&:id)).each{|d| domain_c[d.id] |= ["Registrant".freeze] } + DomainContact.where(contact_id: id, domain_id: domains.map(&:id)).each{|d| domain_c[d.domain_id] |= [d.type] } + domains.each{|d| d.roles = domain_c[d.id].uniq} + domains + end + [] + end + def set_linked statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? end diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml index d0180532d..e528a331d 100644 --- a/app/views/registrant/registrants/partials/_domains.haml +++ b/app/views/registrant/registrants/partials/_domains.haml @@ -1,4 +1,4 @@ -- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params) +- domains = contact.all_registrant_domains(page: params[:domain_page], per: 20, params: params, current_user: current_user) #contacts.panel.panel-default .panel-heading .pull-left From 9df7e7cb9cb18cbc5da147d8016531ac2861bd26 Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 17 Feb 2016 17:48:55 +0200 Subject: [PATCH 07/14] 105842700-related_commit_for_113525877 --- app/controllers/registrant/domains_controller.rb | 16 ++++++++++++++++ .../registrant/registrants_controller.rb | 1 + app/models/contact.rb | 1 - .../domains/domain_verification_url.haml | 13 +++++++++++++ .../registrant/domains/partials/_statuses.haml | 4 ++-- .../registrants/partials/_domains.haml | 2 +- config/locales/en.yml | 2 ++ config/routes.rb | 5 +++++ 8 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 app/views/registrant/domains/domain_verification_url.haml diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb index 0d8ffa5c5..14a961aba 100644 --- a/app/controllers/registrant/domains_controller.rb +++ b/app/controllers/registrant/domains_controller.rb @@ -19,6 +19,22 @@ class Registrant::DomainsController < RegistrantController @domain = domains.find(params[:id]) end + def domain_verification_url + authorize! :view, :registrant_domains + dom = domains.find(params[:id]) + if (dom.statuses.include?(DomainStatus::PENDING_UPDATE) || dom.statuses.include?(DomainStatus::PENDING_DELETE)) && + dom.pending_json.present? + + @domain = dom + confirm_path = "#{ENV['registrant_url']}/registrant/domain_update_confirms" + @verification_url = "#{confirm_path}/#{@domain.id}?token=#{@domain.registrant_verification_token}" + + else + flash[:warning] = I18n.t('available_verification_url_not_found') + redirect_to registrant_domain_path(dom.id) + end + end + def download_list authorize! :view, :registrant_domains params[:q] ||= {} diff --git a/app/controllers/registrant/registrants_controller.rb b/app/controllers/registrant/registrants_controller.rb index adc1e0b82..b395131ea 100644 --- a/app/controllers/registrant/registrants_controller.rb +++ b/app/controllers/registrant/registrants_controller.rb @@ -2,6 +2,7 @@ class Registrant::RegistrantsController < RegistrantController def show @contact = Registrant.find(params[:id]) + @current_user = current_user authorize! :read, @contact @contact.valid? end diff --git a/app/models/contact.rb b/app/models/contact.rb index 035fedf59..85d9ebd99 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -429,7 +429,6 @@ class Contact < ActiveRecord::Base domains.each{|d| d.roles = domain_c[d.id].uniq} domains end - [] end def set_linked diff --git a/app/views/registrant/domains/domain_verification_url.haml b/app/views/registrant/domains/domain_verification_url.haml new file mode 100644 index 000000000..f75091a2e --- /dev/null +++ b/app/views/registrant/domains/domain_verification_url.haml @@ -0,0 +1,13 @@ +- content_for :actions do + = render 'shared/title', name: @domain.name + +.row + .col-md-12 + .panel.panel-default + .panel-heading + %h3.panel-title= t(:personal_domain_verification_url) + .panel-body + .input-group.input-group-lg + %span#sizing-addon1.input-group-addon.glyphicon.glyphicon-link + %input.form-control{"aria-describedby" => "sizing-addon1", type: "text", value: @verification_url} + diff --git a/app/views/registrant/domains/partials/_statuses.haml b/app/views/registrant/domains/partials/_statuses.haml index ab8e55e6c..0aa5b1e6f 100644 --- a/app/views/registrant/domains/partials/_statuses.haml +++ b/app/views/registrant/domains/partials/_statuses.haml @@ -11,8 +11,8 @@ - @domain.statuses.each do |status| %tr %td - - if @domain.pending_json.present? && [DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE].include?(status) - = link_to status, admin_domain_domain_versions_path(@domain.id) + - if [DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE].include?(status) && @domain.pending_json.present? + = link_to(status, domain_verification_url_registrant_domain_url(@domain.id)) - else = status %td= @domain.status_notes[status] diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml index e528a331d..0bbe55c91 100644 --- a/app/views/registrant/registrants/partials/_domains.haml +++ b/app/views/registrant/registrants/partials/_domains.haml @@ -1,4 +1,4 @@ -- domains = contact.all_registrant_domains(page: params[:domain_page], per: 20, params: params, current_user: current_user) +- domains = contact.all_registrant_domains(page: params[:domain_page], per: 20, params: params, registrant: current_user) #contacts.panel.panel-default .panel-heading .pull-left diff --git a/config/locales/en.yml b/config/locales/en.yml index 9d8f25a44..f561df583 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -927,3 +927,5 @@ en: if_auth_info_is_left_empty_it_will_be_auto_generated: 'If auth info is left empty, it will be auto generated.' each_domain_name_must_end_with_colon_sign: 'Each domain name must end with colon (:) sign.' expiration_remind_subject: 'The %{name} domain has expired' + personal_domain_verification_url: 'Personal domain verification url' + available_verification_url_not_found: 'Available verification url not found, for domain.' diff --git a/config/routes.rb b/config/routes.rb index 6b3cbe00a..ad4a16284 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -106,6 +106,11 @@ Rails.application.routes.draw do collection do get :download_list end + + member do + get 'domain_verification_url' + end + end # resources :invoices do From 21896c35df42e302b641314ff1609d4c435354ab Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Fri, 4 Mar 2016 12:42:19 +0200 Subject: [PATCH 08/14] Story#105842700 - Legal doc is already saved at this point and sometimes path is not official --- app/models/epp/domain.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 739c55bec..d077f9236 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -849,6 +849,7 @@ class Epp::Domain < Domain ld = parsed_frame.css('legalDocument').first return nil unless ld return nil if ld.text.starts_with?(ENV['legal_documents_dir']) # escape reloading + return nil if ld.text.starts_with?('/home/') # escape reloading { body: ld.text, From fe4aa3f0b3008565944432932b8c87199f9a8f4c Mon Sep 17 00:00:00 2001 From: Stas Date: Mon, 7 Mar 2016 13:53:13 +0200 Subject: [PATCH 09/14] 105842700-method_for_verification_url --- app/controllers/registrant/domains_controller.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb index 14a961aba..18c29abb0 100644 --- a/app/controllers/registrant/domains_controller.rb +++ b/app/controllers/registrant/domains_controller.rb @@ -26,7 +26,7 @@ class Registrant::DomainsController < RegistrantController dom.pending_json.present? @domain = dom - confirm_path = "#{ENV['registrant_url']}/registrant/domain_update_confirms" + confirm_path = get_confirm_path(dom.statuses) @verification_url = "#{confirm_path}/#{@domain.id}?token=#{@domain.registrant_verification_token}" else @@ -74,4 +74,13 @@ class Registrant::DomainsController < RegistrantController yield params[:q][:valid_to_lteq] = ca_cache end + + def get_confirm_path(statuses) + if statuses.include?(DomainStatus::PENDING_UPDATE) + "#{ENV['registrant_url']}/registrant/domain_update_confirms" + elsif statuses.include?(DomainStatus::PENDING_DELETE) + "#{ENV['registrant_url']}/registrant/domain_delete_confirms" + end + end + end \ No newline at end of file From 1bf7315a9186d215f89191d6464ed4e99b56636f Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Fri, 11 Mar 2016 14:19:48 +0200 Subject: [PATCH 10/14] Story#113525877 - Change state check from pendingDelete to pendingDeleteConfirmation --- app/controllers/registrant/domains_controller.rb | 4 ++-- app/views/registrant/domains/partials/_statuses.haml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb index 18c29abb0..fbd0eff13 100644 --- a/app/controllers/registrant/domains_controller.rb +++ b/app/controllers/registrant/domains_controller.rb @@ -22,7 +22,7 @@ class Registrant::DomainsController < RegistrantController def domain_verification_url authorize! :view, :registrant_domains dom = domains.find(params[:id]) - if (dom.statuses.include?(DomainStatus::PENDING_UPDATE) || dom.statuses.include?(DomainStatus::PENDING_DELETE)) && + if (dom.statuses.include?(DomainStatus::PENDING_UPDATE) || dom.statuses.include?(DomainStatus::PENDING_DELETE_CONFIRMATION)) && dom.pending_json.present? @domain = dom @@ -78,7 +78,7 @@ class Registrant::DomainsController < RegistrantController def get_confirm_path(statuses) if statuses.include?(DomainStatus::PENDING_UPDATE) "#{ENV['registrant_url']}/registrant/domain_update_confirms" - elsif statuses.include?(DomainStatus::PENDING_DELETE) + elsif statuses.include?(DomainStatus::PENDING_DELETE_CONFIRMATION) "#{ENV['registrant_url']}/registrant/domain_delete_confirms" end end diff --git a/app/views/registrant/domains/partials/_statuses.haml b/app/views/registrant/domains/partials/_statuses.haml index 0aa5b1e6f..90a969324 100644 --- a/app/views/registrant/domains/partials/_statuses.haml +++ b/app/views/registrant/domains/partials/_statuses.haml @@ -11,7 +11,7 @@ - @domain.statuses.each do |status| %tr %td - - if [DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE].include?(status) && @domain.pending_json.present? + - if [DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE_CONFIRMATION].include?(status) && @domain.pending_json.present? = link_to(status, domain_verification_url_registrant_domain_url(@domain.id)) - else = status From 51a044979964e2e6fdfb327bc5619013d3d12a45 Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Tue, 15 Mar 2016 14:55:51 +0200 Subject: [PATCH 11/14] Story#105842700 - registrant cannot see other contact domains (legacy from FRED) --- app/controllers/registrant/contacts_controller.rb | 15 +++++++++++---- app/models/contact.rb | 5 ++++- .../registrant/contacts/partials/_domains.haml | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index fd4d32a37..e79add8e9 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -1,19 +1,26 @@ class Registrant::ContactsController < RegistrantController - + helper_method :domain_ids def show - @contact = Contact.where(id: contacts).find_by(id: params[:id]) + @contact = Contact.where(id: contacts).find_by(id: params[:id]) @current_user = current_user + authorize! :read, @contact end def contacts - ident_cc, ident = @current_user.registrant_ident.to_s.split '-' begin - DomainContact.where(domain_id: BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_domain_ids).pluck(:contact_id) + DomainContact.where(domain_id: domain_ids).pluck(:contact_id) rescue Soap::Arireg::NotAvailableError => error flash[:notice] = I18n.t(error.json[:message]) Rails.logger.fatal("[EXCEPTION] #{error.to_s}") [] end end + + def domain_ids + @domain_ids ||= begin + ident_cc, ident = @current_user.registrant_ident.to_s.split '-' + BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_domain_ids + end + end end \ No newline at end of file diff --git a/app/models/contact.rb b/app/models/contact.rb index b7ff9ab1b..ca6eacd94 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -415,7 +415,10 @@ class Contact < ActiveRecord::Base # fetch domains - domains = Domain.where("domains.id IN (#{filter_sql})").includes(:registrar).page(page).per(per) + domains = Domain.where("domains.id IN (#{filter_sql})") + domains = domains.where("domains.id" => params[:leave_domains]) if params[:leave_domains] + domains = domains.includes(:registrar).page(page).per(per) + if sorts.first == "registrar_name".freeze # using small rails hack to generate outer join domains = domains.includes(:registrar).where.not(registrars: {id: nil}).order("registrars.name #{order} NULLS LAST") diff --git a/app/views/registrant/contacts/partials/_domains.haml b/app/views/registrant/contacts/partials/_domains.haml index 01b52c415..eb893053d 100644 --- a/app/views/registrant/contacts/partials/_domains.haml +++ b/app/views/registrant/contacts/partials/_domains.haml @@ -1,4 +1,4 @@ -- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params) +- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params.merge(leave_domains: domain_ids)) #contacts.panel.panel-default .panel-heading .pull-left From f4e068de121a94b26af564c6ae1e6473809a12b0 Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Wed, 16 Mar 2016 13:53:11 +0200 Subject: [PATCH 12/14] Story#105842700 - we don't need registrant views in registrant portal as it's usual contact --- .../registrant/registrants_controller.rb | 9 -- app/views/registrant/domains/index.haml | 5 +- .../registrant/domains/partials/_owner.haml | 2 +- app/views/registrant/registrants/index.haml | 112 ------------------ .../registrants/partials/_domains.haml | 30 ----- .../registrants/partials/_statuses.haml | 21 ---- app/views/registrant/registrants/show.haml | 80 ------------- config/routes.rb | 19 +-- 8 files changed, 3 insertions(+), 275 deletions(-) delete mode 100644 app/controllers/registrant/registrants_controller.rb delete mode 100644 app/views/registrant/registrants/index.haml delete mode 100644 app/views/registrant/registrants/partials/_domains.haml delete mode 100644 app/views/registrant/registrants/partials/_statuses.haml delete mode 100644 app/views/registrant/registrants/show.haml diff --git a/app/controllers/registrant/registrants_controller.rb b/app/controllers/registrant/registrants_controller.rb deleted file mode 100644 index b395131ea..000000000 --- a/app/controllers/registrant/registrants_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class Registrant::RegistrantsController < RegistrantController - - def show - @contact = Registrant.find(params[:id]) - @current_user = current_user - authorize! :read, @contact - @contact.valid? - end -end diff --git a/app/views/registrant/domains/index.haml b/app/views/registrant/domains/index.haml index 776b7878d..ca31d127d 100644 --- a/app/views/registrant/domains/index.haml +++ b/app/views/registrant/domains/index.haml @@ -66,10 +66,7 @@ - @domains.each do |x| %tr %td= link_to(x, registrant_domain_path(x)) - %td - - if x.registrant - = link_to(x.registrant, [:registrant, x.registrant]) if x.registrant - + %td= link_to(x.registrant.name, registrant_contact_path(x.registrant)) if x.registrant %td= l(x.valid_to, format: :short) %td= link_to(x.registrar, registrant_registrar_path(x.registrar)) if x.registrar diff --git a/app/views/registrant/domains/partials/_owner.haml b/app/views/registrant/domains/partials/_owner.haml index f0662fd97..812b97924 100644 --- a/app/views/registrant/domains/partials/_owner.haml +++ b/app/views/registrant/domains/partials/_owner.haml @@ -4,7 +4,7 @@ .panel-body %dl.dl-horizontal %dt= t(:name) - %dd= link_to(@domain.registrant, [:registrant, @domain.registrant]) + %dd= link_to(@domain.registrant.name, registrant_contact_path(@domain.registrant)) %dt= t(:id) %dd= @domain.registrant_code diff --git a/app/views/registrant/registrants/index.haml b/app/views/registrant/registrants/index.haml deleted file mode 100644 index 11838d1b2..000000000 --- a/app/views/registrant/registrants/index.haml +++ /dev/null @@ -1,112 +0,0 @@ -= render 'shared/title', name: t(:contacts) - -.row - .col-md-12 - = search_form_for [:registrar, @q], html: { style: 'margin-bottom: 0;', class: 'js-form', autocomplete: 'off' } do |f| - .row - .col-md-3 - .form-group - = f.label :name - = f.search_field :name_matches, value: params[:q][:name_matches], class: 'form-control', placeholder: t(:name) - .col-md-3 - .form-group - = f.label t(:id) - = f.search_field :code_eq, class: 'form-control', placeholder: t(:id) - .col-md-3 - .form-group - = f.label t(:ident) - = f.search_field :ident_matches, class: 'form-control', placeholder: t(:ident) - .col-md-3 - .form-group - = label_tag t(:ident_type) - = select_tag '[q][ident_type_eq]', options_for_select(Contact::IDENT_TYPES, params[:q][:ident_type_eq]), { include_blank: true, placeholder: t(:choose), class: 'form-control selectize' } - .row - .col-md-3 - .form-group - = f.label t(:email) - = f.search_field :email_matches, class: 'form-control', placeholder: t(:email) - .col-md-3 - .form-group - = label_tag t(:country) - = select_tag '[q][country_code_eq]', SortedCountry.all_options(params[:q][:country_code_eq]), { include_blank: true, placeholder: t(:choose), class: 'form-control selectize' } - .col-md-3 - .form-group - = f.label t(:is_registrant) - %div - = f.check_box :registrant_domains_id_not_null - .col-md-3 - .form-group - = label_tag t(:contact_type) - = select_tag '[q][domain_contacts_type_in]', options_for_select([['admin', 'AdminDomainContact'], ['tech', 'TechDomainContact']], params[:q][:domain_contacts_type_in]), { multiple: true, placeholder: t(:choose), class: 'form-control js-combobox' } - .row - .col-md-3 - .form-group - = f.label t(:registrar) - = f.select :registrar_id_eq, Registrar.all.map { |x| [x, x.id] }, { include_blank: true }, class: 'form-control selectize', placeholder: t(:choose) - .col-md-3 - .form-group - = f.label t(:created_at_from) - = f.search_field :created_at_gteq, value: params[:q][:created_at_gteq], class: 'form-control datepicker', placeholder: t(:created_at_from) - .col-md-3 - .form-group - = f.label t(:created_at_until) - = f.search_field :created_at_lteq, value: params[:q][:created_at_lteq], class: 'form-control datepicker', placeholder: t(:created_at_until) - .col-md-3 - .form-group - = f.label t(:updated_at) - = f.search_field :updated_at_gteq, value: params[:q][:updated_at_gteq], class: 'form-control datepicker', placeholder: t(:updated_at) - .row - .col-md-6 - .form-group - = label_tag t(:status) - = select_tag :statuses_contains, options_for_select(Contact::STATUSES, params[:statuses_contains]), { multiple: true, placeholder: t(:choose), class: 'form-control js-combobox' } - .col-md-3 - .form-group - = label_tag t(:results_per_page) - = text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) - .col-md-3{style: 'padding-top: 25px;'} - %button.btn.btn-primary -   - %span.glyphicon.glyphicon-search -   - %button.btn.btn-default.js-reset-form - = t(:clear_fields) -%hr -.row - .col-md-12 - .table-responsive - %table.table.table-hover.table-bordered.table-condensed - %thead - %tr - %th{class: 'col-xs-2'} - = sort_link(@q, 'name', t(:name)) - %th{class: 'col-xs-2'} - = sort_link(@q, 'code', t(:id)) - %th{class: 'col-xs-2'} - = sort_link(@q, 'ident', t(:ident)) - %th{class: 'col-xs-2'} - = sort_link(@q, 'email', t(:created_at)) - %th{class: 'col-xs-2'} - = sort_link(@q, 'registrar_name', t(:registrar)) - %tbody - - @contacts.each do |contact| - %tr - %td= link_to(contact, registrar_contact_path(contact)) - %td= contact.code - %td= ident_for(contact) - %td= l(contact.created_at, format: :short) - %td - - if contact.registrar - = link_to(contact.registrar, registrar_registrar_path(contact.registrar)) - -.row - .col-md-6 - = paginate @contacts - .col-md-6.text-right - .pagination - = t(:result_count, count: @contacts.total_count) - -:coffee - $(".js-reset-form").on "click", (e) -> - e.preventDefault(); - window.location = "#{registrar_contacts_path}" diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml deleted file mode 100644 index 0bbe55c91..000000000 --- a/app/views/registrant/registrants/partials/_domains.haml +++ /dev/null @@ -1,30 +0,0 @@ -- domains = contact.all_registrant_domains(page: params[:domain_page], per: 20, params: params, registrant: current_user) -#contacts.panel.panel-default - .panel-heading - .pull-left - = t(:domains) - .pull-right - = form_tag request.path, method: :get do - = select_tag :domain_filter, options_for_select(%w(Registrant AdminDomainContact TechDomainContact), selected: params[:domain_filter]), - include_blank: true, class: 'form-control2 selectize2' - %button.btn.btn-primary - %span.glyphicon.glyphicon-search - .clearfix - - .table-responsive - %table.table.table-hover.table-bordered.table-condensed - %thead - %tr - %th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name - %th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name - %th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to - %th{class: 'col-xs-3'}= t(:roles) - %tbody - - domains.each do |x| - %tr - %td= link_to(x.name, [:registrant, x]) - %td= link_to(x.registrar, [:registrant, x.registrar]) - %td= l(x.valid_to, format: :short) - %td= x.roles.join(", ") - -= paginate domains, param_name: :domain_page \ No newline at end of file diff --git a/app/views/registrant/registrants/partials/_statuses.haml b/app/views/registrant/registrants/partials/_statuses.haml deleted file mode 100644 index c39075754..000000000 --- a/app/views/registrant/registrants/partials/_statuses.haml +++ /dev/null @@ -1,21 +0,0 @@ -- panel_class = contact.errors.messages[:statuses] ? 'panel-danger' : 'panel-default' -#contact_statuses.panel{class: panel_class} - .panel-heading.clearfix - = t(:statuses) - .table-responsive - %table.table.table-hover.table-bordered.table-condensed - %thead - %tr - %th{class: 'col-xs-6'}= t(:status) - %th{class: 'col-xs-6'}= t(:notes) - %tbody - - contact.statuses.each do |status| - %tr - %td= status - %td= contact.status_notes[status] - - - if contact.errors.messages[:statuses] - %tfoot - - @domain.errors.messages[:statuses].each do |s| - %tr - %td{colspan: 4}= s diff --git a/app/views/registrant/registrants/show.haml b/app/views/registrant/registrants/show.haml deleted file mode 100644 index d01dba82e..000000000 --- a/app/views/registrant/registrants/show.haml +++ /dev/null @@ -1,80 +0,0 @@ -= render 'shared/title', name: @contact.name - -.row - .col-md-6 - .panel.panel-default - .panel-heading - %h3.panel-title= t(:general) - .panel-body - %dl.dl-horizontal - %dt= t(:id) - %dd= @contact.code - - %dt= t(:authinfo_pw) - %dd - = text_field_tag :auth_info, @contact.auth_info, readonly: true, class: 'partially-hidden' - - %br - - %dt= t(:ident) - %dd= ident_for(@contact) - - %dt= t(:email) - %dd= @contact.email - - %dt= t(:phone) - %dd= @contact.phone - - - if @contact.fax - %dt= t(:fax) - %dd= @contact.fax - - %br - - %dt= t(:created) - %dd - = l(@contact.created_at, format: :short) - by - = @contact.name - - %dt= t(:updated) - %dd - = l(@contact.updated_at, format: :short) - by - = @contact.name - - %dt= t(:registrar) - %dd - - if @contact.registrar.present? - = link_to(@contact.registrar, registrant_registrar_path(@contact.registrar)) if @contact.registrar - - .col-md-6 - .panel.panel-default - .panel-heading - %h3.panel-title= t(:contact) - .panel-body - %dl.dl-horizontal - %dl.dl-horizontal - - if @contact.org_name.present? - %dt= t(:org_name) - %dd= @contact.org_name - - %dt= t(:street) - %dd= @contact.street.to_s.gsub("\n", '
').html_safe - - %dt= t(:city) - %dd= @contact.city - - %dt= t(:zip) - %dd= @contact.zip - - %dt= t(:state) - %dd= @contact.state - - %dt= t(:country) - %dd= @contact.country - -.row - .col-md-12= render 'registrant/registrants/partials/statuses', contact: @contact -.row - .col-md-12= render 'registrant/registrants/partials/domains', contact: @contact \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 6c4246122..ea5b55a7e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -160,28 +160,11 @@ Rails.application.routes.draw do end end - resources :registrants resources :contacts - resources :whois - # resources :contacts do - # member do - # get 'delete' - # end - - # collection do - # get 'check' - # end - # end - - # resource :poll do - # collection do - # post 'confirm_keyrelay' - # post 'confirm_transfer' - # end - # end end + # ADMIN ROUTES namespace :admin do resources :keyrelays From ad4ccbb7678304b14491f6384d23a17eaf3f7681 Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Thu, 17 Mar 2016 16:20:55 +0200 Subject: [PATCH 13/14] Story#105842700 - Add registrants to allowed contacts --- app/controllers/registrant/contacts_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index e79add8e9..db6c279eb 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -9,7 +9,7 @@ class Registrant::ContactsController < RegistrantController def contacts begin - DomainContact.where(domain_id: domain_ids).pluck(:contact_id) + DomainContact.where(domain_id: domain_ids).pluck(:contact_id) | Domain.where(id: domain_ids).pluck(:registrant_id) rescue Soap::Arireg::NotAvailableError => error flash[:notice] = I18n.t(error.json[:message]) Rails.logger.fatal("[EXCEPTION] #{error.to_s}") From 778284c14b7970887ae9f185eccc9b58205328e6 Mon Sep 17 00:00:00 2001 From: Vladimir Krylov Date: Mon, 21 Mar 2016 14:01:50 +0200 Subject: [PATCH 14/14] Story#105842700 - show titles in registrant's domain, contact and contact name --- app/views/registrant/contacts/partials/_general.haml | 3 +++ app/views/registrant/contacts/show.haml | 3 +-- app/views/registrant/domains/show.haml | 3 +-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/registrant/contacts/partials/_general.haml b/app/views/registrant/contacts/partials/_general.haml index 131501232..114988bcc 100644 --- a/app/views/registrant/contacts/partials/_general.haml +++ b/app/views/registrant/contacts/partials/_general.haml @@ -6,6 +6,9 @@ %dt= t(:id) %dd= @contact.code + %dt= t(:name) + %dd= @contact.name + %dt= t(:password) %dd = text_field_tag :auth_info, @contact.auth_info, readonly: true, class: 'partially-hidden' diff --git a/app/views/registrant/contacts/show.haml b/app/views/registrant/contacts/show.haml index 57915e9ff..521a8d549 100644 --- a/app/views/registrant/contacts/show.haml +++ b/app/views/registrant/contacts/show.haml @@ -1,5 +1,4 @@ -- content_for :actions do - = render 'shared/title', name: @contact.name += render 'shared/title', name: @contact.name .row .col-md-6= render 'registrant/contacts/partials/general' diff --git a/app/views/registrant/domains/show.haml b/app/views/registrant/domains/show.haml index 746b1d8d5..4d524b785 100644 --- a/app/views/registrant/domains/show.haml +++ b/app/views/registrant/domains/show.haml @@ -1,5 +1,4 @@ -- content_for :actions do - = render 'shared/title', name: @domain.name += render 'shared/title', name: @domain.name .row .col-md-6= render 'registrant/domains/partials/general'