|
class Audit |
|
include Mongoid::Document |
|
include Mongoid::Timestamps |
|
include RailsAdminImport::Import |
|
|
|
class << self |
|
def create_with_type_message_meta(_type, _message, _user) |
|
self.create_without_type_message_meta({ |
|
:type => _type, |
|
:content => _message, |
|
:meta => create_meta_hash(_user) |
|
}) |
|
end |
|
|
|
def create_metric(name, value, meta={}) |
|
self.create_without_type_message_meta( |
|
:type => "metric:#{name}", |
|
:content => value, |
|
:meta => meta |
|
) |
|
end |
|
|
|
def register_audit_events(mod, categories, events) |
|
_categories = if categories.kind_of?(Array) |
|
categories |
|
else |
|
[categories] |
|
end |
|
_events = if events.kind_of?(Array) |
|
events |
|
else |
|
[events] |
|
end |
|
|
|
_categories.each do |cat| |
|
_events.each do |evt| |
|
["#{mod}_#{cat}_#{evt}", "#{evt}_#{cat}_#{mod}"].each do |mthd| |
|
define_singleton_method mthd do |msg, usr| |
|
self.create_with_type_message_meta("#{mod}:#{cat}:#{evt}", msg, usr) |
|
end |
|
end |
|
end |
|
end |
|
end |
|
|
|
def create_meta_hash(_user) |
|
{ |
|
:user => { |
|
:name => _user.name, |
|
:id => _user.id.to_s, |
|
:account => { |
|
:name => _user.account.name, |
|
:id => _user.account.id.to_s |
|
} |
|
} |
|
} |
|
end |
|
|
|
alias_method_chain :create, :type_message_meta |
|
end |
|
|
|
field :type, type: String |
|
field :content, type: String |
|
field :meta, type: Hash |
|
|
|
register_audit_events :help, :chat, [:begin, :recv] |
|
register_audit_events :trade, :parse, :attempt |
|
|
|
end |