diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 88be076..6690fc1 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,130 +1,131 @@
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
helper_method :current_user, :warden, :days_ago
DATE_FORMAT = "%d-%m-%Y"
LOGS_DEFAULT_HISTORY = 1.week
+ LOGS_PAGE_SIZE = 50
# GET /
def index
redirect_to clients_path if current_user
end
# GET /faq
def faq
@faqs = Faq.order(priority: :desc).all
end
# Warden handler for authentication failure
def unauthenticated
flash[:error] = warden.message || 'There was an error with your login'
if attempted_path == '/grnet'
redirect_to admin_login_path
else
redirect_to root_path
end
end
# POST /grnet
def grnet
if current_user
warden.logout
reset_current_user
end
begin
warden.authenticate!(:admin)
rescue
return unauthenticated
end
current_user
redirect_to admin_path
end
# GET /institutional
def institutional
begin
warden.authenticate!(:institutional)
rescue
return unauthenticated
end
current_user
redirect_to clients_path
end
# POST /vima
def vima
begin
warden.authenticate!(:vima)
rescue
return unauthenticated
end
current_user
redirect_to clients_path
end
def logout
warden.logout
reset_current_user
redirect_to root_path
end
protected
def warden
request.env['warden']
end
def current_user
@current_user ||= warden.user
end
def reset_current_user
@current_user = nil
end
def fetch_logs
date_ranges
return unless @client
@logs = Log.preload(:job).joins(job: :client).
where(Time: @date_range.first..@date_range.last).
where(Client: { ClientId: @client.id })
@logs = @logs.where(JobId: params[:job_id]) if params[:job_id]
- @logs = @logs.order(Time: :desc, LogId: :desc)
+ @logs = @logs.order(Time: :desc, LogId: :desc).page(params[:page]).per(LOGS_PAGE_SIZE)
end
def days_ago
params.fetch(:days_back, 7).to_i rescue 7
end
private
def require_logged_in
return if current_user
flash[:alert] = 'You need to log in first'
redirect_to root_path
end
def attempted_path
(request.env['warden.options'] || {})[:attempted_path]
end
private
def date_ranges
@date_range = [
(params[:start_date].to_date rescue LOGS_DEFAULT_HISTORY.ago.beginning_of_day),
(params[:end_date].to_date rescue Time.now)
]
@dates = {
start: @date_range.first.to_date.strftime(DATE_FORMAT),
end: @date_range.last.to_date.strftime(DATE_FORMAT)
}
end
end
diff --git a/app/views/admin/clients/logs.html.erb b/app/views/admin/clients/logs.html.erb
index 9172d1e..5388966 100644
--- a/app/views/admin/clients/logs.html.erb
+++ b/app/views/admin/clients/logs.html.erb
@@ -1,42 +1,46 @@
<%= render partial: 'header' %>
Logs (<%= @logs.count %>)
+
+ <%= page_entries_info @logs, entry_name: 'log' %>
+ <%= paginate @logs %>
+
<%= bootstrap_form_tag(url: '', method: :get, layout: :inline) do |form| %>
<%= form.text_field :start_date, value: @dates[:start],
class: 'datepicker' %>
<%= form.text_field :end_date, value: @dates[:end],
class: 'datepicker' %>
<%= form.submit 'Show Logs', class: 'btn btn-default' %>
<% end %>
LogId |
JobId |
Job |
Time |
Text |
<%= render partial: 'log', collection: @logs %>
diff --git a/app/views/clients/logs.html.erb b/app/views/clients/logs.html.erb
index 9172d1e..5388966 100644
--- a/app/views/clients/logs.html.erb
+++ b/app/views/clients/logs.html.erb
@@ -1,42 +1,46 @@
<%= render partial: 'header' %>
Logs (<%= @logs.count %>)
+
+ <%= page_entries_info @logs, entry_name: 'log' %>
+ <%= paginate @logs %>
+
<%= bootstrap_form_tag(url: '', method: :get, layout: :inline) do |form| %>
<%= form.text_field :start_date, value: @dates[:start],
class: 'datepicker' %>
<%= form.text_field :end_date, value: @dates[:end],
class: 'datepicker' %>
<%= form.submit 'Show Logs', class: 'btn btn-default' %>
<% end %>
LogId |
JobId |
Job |
Time |
Text |
<%= render partial: 'log', collection: @logs %>