Module: RailsBase::AdminHelper

Included in:
RailsBase::Admin::IndexTile, AdminController
Defined in:
app/helpers/rails_base/admin_helper.rb

Constant Summary collapse

SESSION_REASON_BASE =
'admin_random'
SESSION_REASON_KEY =
'admin_2fa_verify'
SECOND_MODAL_MAPPING =
{
  phone_number: 'rails_base/shared/admin_modify_phone',
  email: 'rails_base/shared/admin_modify_email'
}

Instance Method Summary collapse

Instance Method Details

#accurate_admin_userObject



89
90
91
92
# File 'app/helpers/rails_base/admin_helper.rb', line 89

def accurate_admin_user
  session[RailsBase::Authentication::Constants::ADMIN_REMEMBER_USERID_KEY] ||
    current_user.id
end

#admin_userObject



94
95
96
# File 'app/helpers/rails_base/admin_helper.rb', line 94

def admin_user
  @admin_user ||= User.find(accurate_admin_user)
end

#array_for_proc(proc, array) ⇒ Object



27
28
29
30
31
# File 'app/helpers/rails_base/admin_helper.rb', line 27

def array_for_proc(proc, array)
  array.map do |instance|
    proc.call(instance)
  end
end

#filtered_classes(user, admin) ⇒ Object



12
13
14
15
16
# File 'app/helpers/rails_base/admin_helper.rb', line 12

def filtered_classes(user, admin)
  RailsBase.config.admin.admin_page_filter.map do |object|
    object[:id] if object[:proc].call(user, admin)
  end.compact.join(' ')
end

#fullsized_paginated_countObject



37
38
39
# File 'app/helpers/rails_base/admin_helper.rb', line 37

def fullsized_paginated_count
  AdminAction.paginate_records(page: @starting_page, count_on_page: @count_on_page, user_id: @starting_user[1], admin_id: @starting_admin[1], count: true)
end

#paginante_class_names(curr_page:, page_number:, count_on_page:) ⇒ Object



54
55
56
57
58
# File 'app/helpers/rails_base/admin_helper.rb', line 54

def paginante_class_names(curr_page:, page_number:, count_on_page:)
  bootstrap_class = 'disabled' unless paginate_can_view_page?(page_number: page_number, count_on_page: count_on_page)
  bootstrap_class = 'active' if curr_page == page_number
  bootstrap_class || ''
end

#paginate_admin_can_next?(page_number:, count_on_page:) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
68
# File 'app/helpers/rails_base/admin_helper.rb', line 65

def paginate_admin_can_next?(page_number:, count_on_page:)
  min_size = (page_number) * count_on_page
  fullsized_paginated_count >= min_size
end

#paginate_admin_can_prev?(page_number:, count_on_page:) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
73
74
75
# File 'app/helpers/rails_base/admin_helper.rb', line 70

def paginate_admin_can_prev?(page_number:, count_on_page:)
  return false if (page_number - 1) < 1

  min_size = (page_number - 1) * count_on_page
  fullsized_paginated_count > min_size
end

#paginate_admin_history_range(start:) ⇒ Object



50
51
52
# File 'app/helpers/rails_base/admin_helper.rb', line 50

def paginate_admin_history_range(start:)
  ((start-AdminAction::DEFAULT_PAGE_RANGE)..(start+AdminAction::DEFAULT_PAGE_RANGE))
end

#paginate_admin_what_pageObject



41
42
43
44
45
46
47
48
# File 'app/helpers/rails_base/admin_helper.rb', line 41

def paginate_admin_what_page
  return params[:page].to_i if params[:pagination_count].to_i == params[:prev_count].to_i

  prev_page = params[:prev_page].to_i > 0 ? (params[:prev_page].to_i - 1) : 1
  start_prev = prev_page * params[:prev_count].to_i
  page = (start_prev / params[:pagination_count].to_i)
  page > 0 ? page : 1
end

#paginate_can_view_page?(page_number:, count_on_page:) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
63
# File 'app/helpers/rails_base/admin_helper.rb', line 60

def paginate_can_view_page?(page_number:, count_on_page:)
  min_size = (page_number-1) * count_on_page
  fullsized_paginated_count >= min_size
end

#paginate_diff_id?(type:) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'app/helpers/rails_base/admin_helper.rb', line 85

def paginate_diff_id?(type:)
  session[:"rails_base_paginate_start_#{type}"] != params[type].to_i
end

#paginate_get_admins_arrayObject



81
82
83
# File 'app/helpers/rails_base/admin_helper.rb', line 81

def paginate_get_admins_array
  @paginate_get_admins_array ||= User.where.not(admin: :none).map { |u| [u.full_name, u.id] } << ['All Admins', -1]
end

#paginate_get_users_arrayObject



77
78
79
# File 'app/helpers/rails_base/admin_helper.rb', line 77

def paginate_get_users_array
  @paginate_get_users_array ||= User.where(active: true).map { |u| [u.full_name, u.id] } << ['All Users', -1]
end

#paginated_recordsObject



33
34
35
# File 'app/helpers/rails_base/admin_helper.rb', line 33

def paginated_records
  AdminAction.paginate_records(page: @starting_page, count_on_page: @count_on_page, user_id: @starting_user[1], admin_id: @starting_admin[1])
end

#parse_mfa_to_objObject



102
103
104
105
106
107
108
# File 'app/helpers/rails_base/admin_helper.rb', line 102

def parse_mfa_to_obj
  arr = []
  params[:mfa_input].split('').each_with_index do |code, i|
    arr << ["#{RailsBase::Authentication::Constants::MV_BASE_NAME}#{i}", code]
  end
  { mfa: arr.to_h.symbolize_keys }
end

#session_reasonObject



98
99
100
# File 'app/helpers/rails_base/admin_helper.rb', line 98

def session_reason
  session[SESSION_REASON_KEY]
end

#users_for_proc(proc) ⇒ Object



18
19
20
21
22
23
24
25
# File 'app/helpers/rails_base/admin_helper.rb', line 18

def users_for_proc(proc)
  User.all.select do |user|
    proc.call(user)
  end.map(&:inspect_name)
rescue StandardError => e
  Rails.logger.warn("Error -> #{e}")
  nil
end