Module: TheAudit::Base

Extended by:
ActiveSupport::Concern
Included in:
Audit
Defined in:
app/models/concerns/base.rb

Instance Method Summary collapse

Instance Method Details

#init(controller, object = nil, data = {}) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/models/concerns/base.rb', line 107

def init controller, object = nil, data = {}
  self.user_id = self.user_id_builder(controller)

  self.obj             = object
  self.action_name     = controller.action_name
  self.controller_name = controller.controller_name

  self.data = data.to_json unless data.blank?

  if r = controller.request
    self.ip          = r.ip
    self.user_agent  = r.user_agent
    self.bot         = TheAudit.is_bot?(r.user_agent)

    self.remote_ip   = r.remote_ip
    self.remote_addr = r.remote_addr
    self.remote_host = r.remote_host

    self.fullpath    = self.unescape(r.fullpath) || ''
    self.referer     = self.unescape(r.referer)  || :direct_visit
  end

  self
end

#unescape(str) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'app/models/concerns/base.rb', line 91

def unescape str
  return nil if str.blank?
  res_str = CGI::unescape str

  # try to catch:
  # invalid byte sequence in UTF-8
  # for search requests form old IE6-8 with cp-1251
  begin
    res_str =~ //
  rescue ArgumentError
    res_str = CGI.unescape(str).force_encoding('windows-1251').encode
  end

  res_str
end

#user_id_builder(controller) ⇒ Object



87
88
89
# File 'app/models/concerns/base.rb', line 87

def user_id_builder controller
  controller.try(:current_user).try(:id)
end

#user_nameObject



79
80
81
# File 'app/models/concerns/base.rb', line 79

def user_name
  user.try(:email) || user.try(:login) || user.try(:username)
end

#user_path(context) ⇒ Object



83
84
85
# File 'app/models/concerns/base.rb', line 83

def user_path context
  "/users/#{ user.to_param }"
end