activeadmin-audit 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -3
- data/activeadmin-audit.gemspec +1 -1
- data/app/admin/content_versions.rb +7 -2
- data/app/models/active_admin/audit/content_version.rb +2 -2
- data/lib/active_admin/audit.rb +13 -0
- data/lib/active_admin/audit/configuration.rb +14 -0
- data/lib/active_admin/audit/controller_helper.rb +2 -2
- data/lib/active_admin/audit/engine.rb +4 -0
- data/lib/active_admin/audit/has_versions.rb +8 -8
- data/lib/active_admin/audit/version.rb +1 -1
- data/lib/generators/active_admin_audit/install_generator.rb +17 -0
- data/lib/generators/active_admin_audit/templates/active_admin.audit.rb.erb +8 -0
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e531041f918eba6555a4d60a8be881de0f5e21d
|
4
|
+
data.tar.gz: 47a35a6077e02a7cad49cccfd72ec7f2ced715c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 197e0bc999224d9017ccbef3e1e953ebd64068cdac8e0c0bafd104ecd72e7f80bf3a132bf8887d4b1db1f5d96287adf374b6ed5e72f90e3093b5297a303685e1
|
7
|
+
data.tar.gz: 6c22f3a836fa938c58d9ada37e00d1f8563c3d708a8e67bbdcf145ee96a31e31ddaeabed9d08f4c912861dd46bcab7fdb95c11daa7da4a28fe76884ab00c7fcc
|
data/README.md
CHANGED
@@ -23,6 +23,26 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
$ gem install activeadmin-audit
|
25
25
|
|
26
|
+
## Setting up Active Admin Audit (for Rails)
|
27
|
+
|
28
|
+
After installing the gem, you need to run the generator. Here are your options:
|
29
|
+
|
30
|
+
- If you want to use an existing user class, provide it as an argument:
|
31
|
+
```sh
|
32
|
+
rails g active_admin_audit:install User
|
33
|
+
```
|
34
|
+
|
35
|
+
- Otherwise, with no arguments we will create an `AdminUser` class to use with Devise:
|
36
|
+
```sh
|
37
|
+
rails g active_admin_audit:install
|
38
|
+
```
|
39
|
+
|
40
|
+
The generator adds these core files, among others:
|
41
|
+
|
42
|
+
```
|
43
|
+
config/initializers/active_admin_audit.rb
|
44
|
+
```
|
45
|
+
|
26
46
|
## Usage
|
27
47
|
|
28
48
|
Copy and apply migrations
|
@@ -46,7 +66,7 @@ class ApplicationController < ActionController::Base
|
|
46
66
|
end
|
47
67
|
```
|
48
68
|
|
49
|
-
From model that you want to auditing call `has_versions` method
|
69
|
+
From model that you want to auditing call `has_versions` method
|
50
70
|
|
51
71
|
```ruby
|
52
72
|
class Movie < ActiveRecord::Base
|
@@ -58,7 +78,7 @@ class Movie < ActiveRecord::Base
|
|
58
78
|
images: [:url, :width, :height, :kind],
|
59
79
|
}
|
60
80
|
```
|
61
|
-
|
81
|
+
|
62
82
|
By default `has_versions` take care about all record attributes including belongs_to references. If you don't want to include some attribute you can pass it name to `skip` options. If you want to include has_many relation pass it's name with attributes to `also_include` option.
|
63
83
|
|
64
84
|
To display table with latest changes on the ActiveAdmin resource page use helper `latest_versions`:
|
@@ -88,4 +108,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERN
|
|
88
108
|
## License
|
89
109
|
|
90
110
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
91
|
-
|
data/activeadmin-audit.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_dependency 'activeadmin', '>= 1.0.0.pre1'
|
23
|
-
spec.add_dependency 'paper_trail', '~>
|
23
|
+
spec.add_dependency 'paper_trail', '~> 5.0'
|
24
24
|
spec.add_dependency 'rails', '>= 4.0.0'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
@@ -5,7 +5,12 @@ ActiveAdmin.register ActiveAdmin::Audit::ContentVersion, as: 'ContentVersion' do
|
|
5
5
|
|
6
6
|
filter :item_type, input_html: { class: 'chosen' }, as: :select
|
7
7
|
filter :event, input_html: { class: 'chosen' }, as: :select
|
8
|
-
filter :whodunnit, input_html: { class: 'chosen' }, as: :select,
|
8
|
+
filter :whodunnit, input_html: { class: 'chosen' }, as: :select,
|
9
|
+
collection: lambda {
|
10
|
+
ActiveAdmin::Audit.configuration.user_class_name.to_s.classify.constantize.all.map do |user|
|
11
|
+
[user.email, user.id]
|
12
|
+
end
|
13
|
+
}
|
9
14
|
filter :created_at
|
10
15
|
|
11
16
|
index do
|
@@ -53,4 +58,4 @@ ActiveAdmin.register ActiveAdmin::Audit::ContentVersion, as: 'ContentVersion' do
|
|
53
58
|
additional_objects_snapshot: version.additional_objects_snapshot,
|
54
59
|
}
|
55
60
|
end
|
56
|
-
end
|
61
|
+
end
|
@@ -29,7 +29,7 @@ module ActiveAdmin
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def who
|
32
|
-
|
32
|
+
Audit.configuration.user_class_name.to_s.classify.constantize.find_by(id: whodunnit)
|
33
33
|
end
|
34
34
|
|
35
35
|
def item_class
|
@@ -45,4 +45,4 @@ module ActiveAdmin
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
end
|
48
|
+
end
|
data/lib/active_admin/audit.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'active_admin'
|
2
|
+
require 'active_admin/audit/configuration'
|
2
3
|
require 'active_admin/audit/version'
|
3
4
|
require 'active_admin/audit/engine'
|
4
5
|
require 'active_admin/audit/controller_helper'
|
@@ -9,5 +10,17 @@ require 'active_admin/versions_helper'
|
|
9
10
|
|
10
11
|
module ActiveAdmin
|
11
12
|
module Audit
|
13
|
+
class << self
|
14
|
+
attr_accessor :configuration
|
15
|
+
|
16
|
+
def configuration
|
17
|
+
@configuration ||= ::ActiveAdmin::Audit::Configuration.new
|
18
|
+
end
|
19
|
+
|
20
|
+
# Gets called within the initializer
|
21
|
+
def setup
|
22
|
+
yield(configuration)
|
23
|
+
end
|
24
|
+
end
|
12
25
|
end
|
13
26
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Audit
|
3
|
+
class Configuration
|
4
|
+
include ActiveAdmin::Settings
|
5
|
+
|
6
|
+
# == User class name
|
7
|
+
#
|
8
|
+
# Set the name of the class that is used as the AdminUser.
|
9
|
+
# Defaults to AdminUser
|
10
|
+
#
|
11
|
+
setting :user_class_name, :admin_user
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,7 +2,7 @@ module ActiveAdmin
|
|
2
2
|
module Audit
|
3
3
|
module ControllerHelper
|
4
4
|
def user_for_paper_trail
|
5
|
-
|
5
|
+
send(ActiveAdmin.application.current_user_method)
|
6
6
|
end
|
7
7
|
|
8
8
|
def paper_trail_enabled_for_controller
|
@@ -10,4 +10,4 @@ module ActiveAdmin
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
@@ -14,7 +14,7 @@ module ActiveAdmin
|
|
14
14
|
options[:skip] += translated_attrs.map { |attr| "#{attr}_translations" }
|
15
15
|
end
|
16
16
|
|
17
|
-
has_paper_trail options.merge(on: [
|
17
|
+
has_paper_trail options.merge(on: [], class_name: 'ActiveAdmin::Audit::ContentVersion', meta: {
|
18
18
|
additional_objects: ->(record) { record.additional_objects_snapshot.to_json },
|
19
19
|
additional_objects_changes: ->(record) { record.additional_objects_snapshot_changes.to_json },
|
20
20
|
})
|
@@ -39,7 +39,7 @@ module ActiveAdmin
|
|
39
39
|
|
40
40
|
# Will save new version of the object
|
41
41
|
after_commit do
|
42
|
-
if
|
42
|
+
if paper_trail.enabled?
|
43
43
|
if @event_for_paper_trail
|
44
44
|
generate_version!
|
45
45
|
end
|
@@ -50,7 +50,7 @@ module ActiveAdmin
|
|
50
50
|
|
51
51
|
if options_on.include?(:create)
|
52
52
|
after_create do
|
53
|
-
if
|
53
|
+
if paper_trail.enabled?
|
54
54
|
@event_for_paper_trail = 'create'
|
55
55
|
end
|
56
56
|
end
|
@@ -59,7 +59,7 @@ module ActiveAdmin
|
|
59
59
|
if options_on.include?(:update)
|
60
60
|
# Cache object changes to access it from after_commit
|
61
61
|
after_update do
|
62
|
-
if
|
62
|
+
if paper_trail.enabled?
|
63
63
|
@event_for_paper_trail = 'update'
|
64
64
|
cache_version_object_changes
|
65
65
|
end
|
@@ -69,7 +69,7 @@ module ActiveAdmin
|
|
69
69
|
if options_on.include?(:destroy)
|
70
70
|
# Cache all details to access it from after_commit
|
71
71
|
before_destroy do
|
72
|
-
if
|
72
|
+
if paper_trail.enabled?
|
73
73
|
@event_for_paper_trail = 'destroy'
|
74
74
|
cache_version_object
|
75
75
|
cache_version_object_changes
|
@@ -97,15 +97,15 @@ module ActiveAdmin
|
|
97
97
|
private
|
98
98
|
|
99
99
|
def cache_version_object
|
100
|
-
@version_object_cache ||= object_attrs_for_paper_trail
|
100
|
+
@version_object_cache ||= paper_trail.object_attrs_for_paper_trail
|
101
101
|
end
|
102
102
|
|
103
103
|
def cache_version_object_changes
|
104
|
-
@version_object_changes_cache ||=
|
104
|
+
@version_object_changes_cache ||= paper_trail.changes
|
105
105
|
end
|
106
106
|
|
107
107
|
def cache_version_additional_objects_and_changes
|
108
|
-
@version_additional_objects_and_changes_cache ||= merge_metadata({})
|
108
|
+
@version_additional_objects_and_changes_cache ||= paper_trail.merge_metadata({})
|
109
109
|
end
|
110
110
|
|
111
111
|
def clear_version_cache
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module ActiveAdminAudit
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < ActiveRecord::Generators::Base
|
6
|
+
desc "Installs Active Admin Audit and generates the necessary configurations"
|
7
|
+
argument :name, type: :string, default: "AdminUser"
|
8
|
+
|
9
|
+
source_root File.expand_path("../templates", __FILE__)
|
10
|
+
|
11
|
+
def copy_initializer
|
12
|
+
@underscored_user_name = name.underscore.gsub('/', '_')
|
13
|
+
template 'active_admin.audit.rb.erb', 'config/initializers/active_admin_audit.rb'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeadmin-audit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Emelyanov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeadmin
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '5.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '5.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -218,6 +218,7 @@ files:
|
|
218
218
|
- bin/setup
|
219
219
|
- db/migrate/20141219113159_create_versions.rb
|
220
220
|
- lib/active_admin/audit.rb
|
221
|
+
- lib/active_admin/audit/configuration.rb
|
221
222
|
- lib/active_admin/audit/controller_helper.rb
|
222
223
|
- lib/active_admin/audit/engine.rb
|
223
224
|
- lib/active_admin/audit/has_versions.rb
|
@@ -226,6 +227,8 @@ files:
|
|
226
227
|
- lib/active_admin/versions_helper.rb
|
227
228
|
- lib/active_admin/views/latest_versions.rb
|
228
229
|
- lib/activeadmin/audit.rb
|
230
|
+
- lib/generators/active_admin_audit/install_generator.rb
|
231
|
+
- lib/generators/active_admin_audit/templates/active_admin.audit.rb.erb
|
229
232
|
homepage: https://github.com/holyketzer/activeadmin-audit
|
230
233
|
licenses:
|
231
234
|
- MIT
|
@@ -246,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
249
|
version: '0'
|
247
250
|
requirements: []
|
248
251
|
rubyforge_project:
|
249
|
-
rubygems_version: 2.
|
252
|
+
rubygems_version: 2.6.8
|
250
253
|
signing_key:
|
251
254
|
specification_version: 4
|
252
255
|
summary: PaperTrail based audit for ActiveAdmin
|