audit_log 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/audit_log.rb +0 -1
- data/lib/audit_log/controller.rb +1 -7
- data/lib/audit_log/observer.rb +35 -9
- data/lib/audit_log/version.rb +1 -1
- metadata +8 -9
- data/lib/audit_log/current_thread.rb +0 -23
data/lib/audit_log.rb
CHANGED
data/lib/audit_log/controller.rb
CHANGED
@@ -2,13 +2,7 @@ module AuditLog
|
|
2
2
|
|
3
3
|
module Controller
|
4
4
|
|
5
|
-
|
6
|
-
controller.before_filter :user_for_audit_log
|
7
|
-
end
|
8
|
-
|
9
|
-
def user_for_audit_log
|
10
|
-
AuditLog::CurrentThread.who = current_user_for_audit_log
|
11
|
-
end
|
5
|
+
attr_accessor :audited_model
|
12
6
|
|
13
7
|
def current_user_for_audit_log
|
14
8
|
current_user
|
data/lib/audit_log/observer.rb
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
class AuditedModelsObserver < ActiveRecord::Observer
|
2
2
|
|
3
|
+
attr_accessor :controller
|
4
|
+
|
3
5
|
def self.observed_classes
|
4
6
|
AuditLog::Mapping.instance.audit_mappings.keys.collect{|model_as_symbol| model_as_symbol.to_s.camelize.constantize}
|
5
7
|
end
|
6
8
|
|
9
|
+
|
7
10
|
def before_validation(model)
|
8
|
-
|
11
|
+
self.controller.audited_model ||= model
|
9
12
|
end
|
10
13
|
|
11
14
|
def after_create(model)
|
12
|
-
if
|
15
|
+
if self.controller.audited_model == model
|
13
16
|
logged_model = LoggedModel.new(
|
14
|
-
who:
|
17
|
+
who: self.controller.current_user_for_audit_log,
|
15
18
|
what: {id: model.id, event: :create},
|
16
19
|
model_name: model.class.name,
|
17
20
|
model_id: model.id
|
@@ -22,11 +25,11 @@ class AuditedModelsObserver < ActiveRecord::Observer
|
|
22
25
|
|
23
26
|
|
24
27
|
def before_destroy(model)
|
25
|
-
|
28
|
+
self.controller.audited_model ||= model
|
26
29
|
|
27
|
-
if
|
30
|
+
if self.controller.audited_model == model
|
28
31
|
logged_model = LoggedModel.new(
|
29
|
-
who:
|
32
|
+
who: self.controller.current_user_for_audit_log,
|
30
33
|
what: {id: model.id, event: :destroy},
|
31
34
|
model_name: model.class.name,
|
32
35
|
model_id: model.id
|
@@ -36,14 +39,14 @@ class AuditedModelsObserver < ActiveRecord::Observer
|
|
36
39
|
end
|
37
40
|
|
38
41
|
def after_update(model)
|
39
|
-
if
|
42
|
+
if self.controller.audited_model == model
|
40
43
|
changes = Thread.current[:audited_model_changes]
|
41
44
|
|
42
45
|
if changes
|
43
46
|
what = WhatBuilder.new(changes).build
|
44
47
|
|
45
48
|
logged_model = LoggedModel.new(
|
46
|
-
who:
|
49
|
+
who: self.controller.current_user_for_audit_log,
|
47
50
|
what: what,
|
48
51
|
model_name: model.class.name,
|
49
52
|
model_id: model.id
|
@@ -54,7 +57,7 @@ class AuditedModelsObserver < ActiveRecord::Observer
|
|
54
57
|
end
|
55
58
|
|
56
59
|
def before_update(model)
|
57
|
-
if
|
60
|
+
if self.controller.audited_model == model
|
58
61
|
if (model.changed? && !(model.changed_attributes.keys.collect{|attr| attr.to_sym}.uniq.sort - ignored_fields(model).uniq.sort).empty?) ||
|
59
62
|
has_some_association_changed?(model)
|
60
63
|
changes = {model: model, fields_updates: {}, has_many: {}, has_one: {}}
|
@@ -199,3 +202,26 @@ class AuditedModelsObserver < ActiveRecord::Observer
|
|
199
202
|
end
|
200
203
|
|
201
204
|
end
|
205
|
+
|
206
|
+
require 'singleton'
|
207
|
+
|
208
|
+
class ControllerInterceptor
|
209
|
+
include Singleton
|
210
|
+
|
211
|
+
def before(controller)
|
212
|
+
AuditedModelsObserver.instance.controller = controller
|
213
|
+
true
|
214
|
+
end
|
215
|
+
|
216
|
+
def after(controller)
|
217
|
+
AuditedModelsObserver.instance.controller = nil
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
if defined?(ActionController) and defined?(ActionController::Base)
|
224
|
+
ActionController::Base.class_eval do
|
225
|
+
around_filter ControllerInterceptor.instance
|
226
|
+
end
|
227
|
+
end
|
data/lib/audit_log/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audit_log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &82838150 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>'
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *82838150
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &82837940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *82837940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &82837710 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *82837710
|
47
47
|
description:
|
48
48
|
email:
|
49
49
|
- ti@connectere.agr.br
|
@@ -56,7 +56,6 @@ files:
|
|
56
56
|
- lib/audit_log/observer.rb
|
57
57
|
- lib/audit_log/logged_model.rb
|
58
58
|
- lib/audit_log/mapping.rb
|
59
|
-
- lib/audit_log/current_thread.rb
|
60
59
|
- lib/generators/audit_log/templates/create_logged_models.rb
|
61
60
|
- lib/generators/audit_log/install_generator.rb
|
62
61
|
- lib/audit_log.rb
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module AuditLog
|
2
|
-
|
3
|
-
class CurrentThread
|
4
|
-
|
5
|
-
class << self
|
6
|
-
def who=(user)
|
7
|
-
auditing_data[:who] = user
|
8
|
-
end
|
9
|
-
|
10
|
-
def who
|
11
|
-
auditing_data[:who]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def self.auditing_data
|
18
|
-
Thread.current[:auditing_log] ||= {}
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|