activeadmin-audit 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|