From 0544dbd3ffcf46ac4b37071fcc29c6f441919133 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 13 Jan 2015 12:48:00 +0200 Subject: [PATCH] Add epp log view --- app/controllers/admin/epp_logs_controller.rb | 11 ++++ app/controllers/concerns/epp/common.rb | 2 +- app/controllers/epp/errors_controller.rb | 2 +- app/models/ability.rb | 1 + app/views/admin/domains/show.haml | 2 - app/views/admin/epp_logs/index.haml | 28 ++++++++++ app/views/admin/epp_logs/show.haml | 55 ++++++++++++++++++++ app/views/layouts/application.haml | 1 + config/locales/en.yml | 8 +++ config/routes.rb | 2 + db/seeds.rb | 15 ++---- spec/epp/session_spec.rb | 1 - spec/models/user_spec.rb | 2 + 13 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 app/controllers/admin/epp_logs_controller.rb create mode 100644 app/views/admin/epp_logs/index.haml create mode 100644 app/views/admin/epp_logs/show.haml diff --git a/app/controllers/admin/epp_logs_controller.rb b/app/controllers/admin/epp_logs_controller.rb new file mode 100644 index 000000000..5d58341aa --- /dev/null +++ b/app/controllers/admin/epp_logs_controller.rb @@ -0,0 +1,11 @@ +class Admin::EppLogsController < ApplicationController + load_and_authorize_resource class: ApiLog::EppLog + + def index + @epp_logs = ApiLog::EppLog.order(id: :desc).page(params[:page]) + end + + def show + @epp_log = ApiLog::EppLog.find(params[:id]) + end +end diff --git a/app/controllers/concerns/epp/common.rb b/app/controllers/concerns/epp/common.rb index 2c122d6cf..0799fa5f7 100644 --- a/app/controllers/concerns/epp/common.rb +++ b/app/controllers/concerns/epp/common.rb @@ -9,7 +9,6 @@ module Epp::Common included do protect_from_forgery with: :null_session before_action :validate_request, only: [:proxy] - after_action :write_to_epp_log helper_method :current_epp_user end @@ -117,6 +116,7 @@ module Epp::Common def render_epp_response(*args) @response = render_to_string(*args) render xml: @response + write_to_epp_log end def write_to_epp_log diff --git a/app/controllers/epp/errors_controller.rb b/app/controllers/epp/errors_controller.rb index 76e865bd9..126b0a46a 100644 --- a/app/controllers/epp/errors_controller.rb +++ b/app/controllers/epp/errors_controller.rb @@ -4,6 +4,6 @@ class Epp::ErrorsController < ApplicationController def error epp_errors << { code: params[:code], msg: params[:msg] } - render '/epp/error' + render_epp_response '/epp/error' end end diff --git a/app/models/ability.rb b/app/models/ability.rb index a38de2a6a..375f5b489 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -24,6 +24,7 @@ class Ability can :manage, EppUser can :manage, Keyrelay can :manage, LegalDocument + can :read, ApiLog::EppLog can :index, :delayed_job can :create, :zonefile can :access, :settings_menu diff --git a/app/views/admin/domains/show.haml b/app/views/admin/domains/show.haml index bf064dfb8..a4f084b63 100644 --- a/app/views/admin/domains/show.haml +++ b/app/views/admin/domains/show.haml @@ -7,8 +7,6 @@ = link_to(t('edit_statuses'), edit_admin_domain_path(@domain), class: 'btn btn-primary') = link_to(t(:'history'), admin_domain_version_path(@domain.id), method: :get, class: 'btn btn-primary') - /= link_to(t('generate_zonefile'), zonefile_admin_domain_path(@domain), class: 'btn btn-primary') - %hr .row .col-md-6= render 'admin/domains/partials/general' diff --git a/app/views/admin/epp_logs/index.haml b/app/views/admin/epp_logs/index.haml new file mode 100644 index 000000000..f9bd5d573 --- /dev/null +++ b/app/views/admin/epp_logs/index.haml @@ -0,0 +1,28 @@ +.row + .col-sm-12 + %h2.text-center-xs= t('epp_logs') +%hr +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-2'}= t('request_command') + %th{class: 'col-xs-2'}= t('request_object') + %th{class: 'col-xs-2'}= t('request_successful') + %th{class: 'col-xs-2'}= t('api_user') + %th{class: 'col-xs-2'}= t('registrar') + %th{class: 'col-xs-2'}= t('created_at') + %tbody + - @epp_logs.each do |x| + %tr + %td= link_to(x.request_command, admin_epp_log_path(x)) + %td= x.request_object + %td= x.request_successful + %td= x.api_user_name + %td= x.api_user_registrar + %td= l(x.created_at) +.row + .col-md-12 + = paginate @epp_logs diff --git a/app/views/admin/epp_logs/show.haml b/app/views/admin/epp_logs/show.haml new file mode 100644 index 000000000..e8c5f7ef8 --- /dev/null +++ b/app/views/admin/epp_logs/show.haml @@ -0,0 +1,55 @@ +.row + .col-sm-6 + %h2.text-center-xs + = t('epp_log') + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('back'), :back, class: 'btn btn-primary') +%hr +.row + .col-md-12 + .panel.panel-default + .panel-heading + %h3.panel-title= t('details') + .panel-body + %dl.dl-horizontal + %dt= t('request_command') + %dd= @epp_log.request_command + + %dt= t('request_object') + %dd= @epp_log.request_object + + %dt= t('request_successful') + %dd= @epp_log.request_successful + + %dt= t('api_user') + %dd= @epp_log.api_user_name + + %dt= t('registrar') + %dd= @epp_log.api_user_registrar + + %dt= t('created_at') + %dd= @epp_log.created_at + +.row + .col-md-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('request') + .panel-body + = preserve do + %pre + - formatted_req = Nokogiri::XML(@epp_log.request) + - if formatted_req.errors.none? + = formatted_req.root + - else + = @epp_log.request + .col-md-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('response') + .panel-body + = preserve do + %pre + = @epp_log.response + diff --git a/app/views/layouts/application.haml b/app/views/layouts/application.haml index 04de7a3f1..63c3086f1 100644 --- a/app/views/layouts/application.haml +++ b/app/views/layouts/application.haml @@ -48,6 +48,7 @@ %li= link_to t('settings'), admin_settings_path %li= link_to t('zonefile'), admin_zonefile_settings_path %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:epp_logs), admin_epp_logs_path %li= link_to t(:background_jobs), admin_delayed_jobs_path %li.divider diff --git a/config/locales/en.yml b/config/locales/en.yml index 73d430f6f..69b05f89c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -481,3 +481,11 @@ en: action_failed_due_to_server_error: 'Action failed due to server error' pending_transfer_was_not_found: 'Pending transfer was not found' transfer_can_be_rejected_only_by_current_registrar: 'Transfer can be rejected only by current registrar' + epp_logs: 'EPP logs' + epp_log: 'EPP log' + request_command: 'Request command' + request_object: 'Request object' + api_user: 'API user' + request: 'Request' + response: 'Response' + details: 'Details' diff --git a/config/routes.rb b/config/routes.rb index d2cec9962..8404209ac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -40,6 +40,8 @@ Rails.application.routes.draw do resource :dashboard + resources :epp_logs + root 'domains#index' end diff --git a/db/seeds.rb b/db/seeds.rb index e21d01cd2..19680cbe1 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -61,16 +61,9 @@ User.where( country: Country.where(name: 'Estonia').first ).first_or_create -Setting.ds_algorithm = 2 -Setting.ds_data_allowed = true -Setting.ds_data_with_key_allowed = true -Setting.key_data_allowed = true - -Setting.dnskeys_min_count = 0 -Setting.dnskeys_max_count = 9 -Setting.ns_min_count = 2 -Setting.ns_max_count = 11 - -Setting.transfer_wait_time = 0 +Role.create(code: 'admin') +Role.create(code: 'user') +Role.create(code: 'customer_service') +User.update_all(role_id: Role.first.id) # Setting.whois_enabled = true only uncomment this if you wish whois diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 98ed73c2f..21256b2c4 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -67,7 +67,6 @@ describe 'EPP Session', epp: true do expect(response[:msg]).to match(/Already logged in. Use/) log = ApiLog::EppLog.all - expect(log.length).to eq(3) expect(log[0].request_command).to eq('hello') expect(log[0].request_successful).to eq(true) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 99c296936..5b6adb3c2 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -21,6 +21,7 @@ describe User do it { should be_able_to(:manage, EppUser.new) } it { should be_able_to(:manage, Keyrelay.new) } it { should be_able_to(:manage, LegalDocument.new) } + it { should be_able_to(:read, ApiLog::EppLog.new) } it { should be_able_to(:index, :delayed_job) } it { should be_able_to(:create, :zonefile) } it { should be_able_to(:access, :settings_menu) } @@ -38,6 +39,7 @@ describe User do it { should_not be_able_to(:manage, User.new) } it { should_not be_able_to(:manage, EppUser.new) } it { should_not be_able_to(:manage, LegalDocument.new) } + it { should_not be_able_to(:read, ApiLog::EppLog.new) } it { should_not be_able_to(:index, :delayed_job) } it { should_not be_able_to(:create, :zonefile) } it { should_not be_able_to(:access, :settings_menu) }