audit-log 1.0.0 → 1.2.0
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 +2 -0
- data/Rakefile +16 -16
- data/app/controllers/audit_log/logs_controller.rb +3 -3
- data/config/routes.rb +1 -1
- data/db/migrate/20190527035005_create_audit_logs.rb +13 -11
- data/lib/audit-log/configuration.rb +3 -0
- data/lib/audit-log/controller_helper.rb +3 -1
- data/lib/audit-log/engine.rb +2 -2
- data/lib/audit-log/log_subscriber.rb +1 -1
- data/lib/audit-log/model.rb +6 -4
- data/lib/audit-log/version.rb +1 -1
- data/lib/audit-log.rb +12 -11
- data/lib/generators/audit_log/install_generator.rb +5 -5
- metadata +8 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 613411720c743b51ce59f552b9264cddfc19a7b4443ebb886f4bed80f42622ff
|
4
|
+
data.tar.gz: f17b916a8898fc3b48b9010f5b9bf39dd4a4e246a245d79b500e8cdd7ca36353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c4ec193452b1ef7ba92e699c3043f8f83fdf5a8e3eacc69ac0ada22816583706894a20d2b0788e573a3a8dff4710b4ee00819b332b1849b744ec271ca8b5a06
|
7
|
+
data.tar.gz: 4d0dc7efb373289ffb6cabfd806ad1105259b8e9d0e2a399e694fa2ffc91071dd85004a01684f70925e8b05c7b7afa1b18dbb5980b686c5b80a4e9627eb71d1d
|
data/README.md
CHANGED
@@ -6,6 +6,8 @@ Trail audit logs (Operation logs) into the database for user behaviors, includin
|
|
6
6
|
|
7
7
|
> We used audit-log in our production environment more than 1 year, until now (2020.5.21), it's inserted about **20 million** log in our system.
|
8
8
|
|
9
|
+
[中文介绍与使用说明](https://ruby-china.org/topics/39890)
|
10
|
+
|
9
11
|
## Demo UI
|
10
12
|
|
11
13
|
Audit log list:
|
data/Rakefile
CHANGED
@@ -1,34 +1,34 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
begin
|
4
|
-
require
|
4
|
+
require "bundler/setup"
|
5
5
|
rescue LoadError
|
6
|
-
puts
|
6
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
7
7
|
end
|
8
8
|
|
9
|
-
require
|
9
|
+
require "rdoc/task"
|
10
10
|
|
11
11
|
RDoc::Task.new(:rdoc) do |rdoc|
|
12
|
-
rdoc.rdoc_dir =
|
13
|
-
rdoc.title =
|
14
|
-
rdoc.options <<
|
15
|
-
rdoc.rdoc_files.include(
|
16
|
-
rdoc.rdoc_files.include(
|
12
|
+
rdoc.rdoc_dir = "rdoc"
|
13
|
+
rdoc.title = "AuditLog"
|
14
|
+
rdoc.options << "--line-numbers"
|
15
|
+
rdoc.rdoc_files.include("README.md")
|
16
|
+
rdoc.rdoc_files.include("lib/**/*.rb")
|
17
17
|
end
|
18
18
|
|
19
|
-
APP_RAKEFILE = File.expand_path(
|
20
|
-
load
|
19
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
20
|
+
load "rails/tasks/engine.rake"
|
21
21
|
|
22
|
-
load
|
22
|
+
load "rails/tasks/statistics.rake"
|
23
23
|
|
24
|
-
require
|
24
|
+
require "bundler/gem_tasks"
|
25
25
|
|
26
|
-
require
|
26
|
+
require "rake/testtask"
|
27
27
|
|
28
28
|
Rake::TestTask.new(:test) do |t|
|
29
|
-
t.libs <<
|
30
|
-
t.libs <<
|
31
|
-
t.pattern =
|
29
|
+
t.libs << "lib"
|
30
|
+
t.libs << "test"
|
31
|
+
t.pattern = "test/**/*_test.rb"
|
32
32
|
t.verbose = false
|
33
33
|
end
|
34
34
|
|
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
module AuditLog
|
4
4
|
class LogsController < ActionController::Base
|
5
|
-
layout
|
5
|
+
layout "audit-log/application"
|
6
6
|
before_action :set_log, only: %i[show destroy]
|
7
7
|
|
8
8
|
def index
|
9
|
-
@logs = Log.order(
|
10
|
-
@logs = @logs.where(
|
9
|
+
@logs = Log.order("id desc").includes(:user)
|
10
|
+
@logs = @logs.where("action like ?", "%#{params[:q]}%") if params[:q].present?
|
11
11
|
@logs = @logs.where("action = ?", params[:action_type]) if params[:action_type].present?
|
12
12
|
@logs = @logs.where("created_at >= ?", Time.parse(params[:start_time])) if params[:start_time].present?
|
13
13
|
@logs = @logs.where("created_at < ?", Time.parse(params[:end_time])) if params[:end_time].present?
|
data/config/routes.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateAuditLogs < ActiveRecord::Migration[5.2]
|
2
4
|
def change
|
3
|
-
create_table
|
4
|
-
t.string
|
5
|
-
t.
|
6
|
-
t.
|
7
|
-
t.string
|
8
|
-
t.text
|
9
|
-
t.text
|
10
|
-
t.datetime
|
11
|
-
t.datetime
|
5
|
+
create_table "audit_logs", force: :cascade do |t|
|
6
|
+
t.string "action", null: false
|
7
|
+
t.bigint "user_id"
|
8
|
+
t.bigint "record_id"
|
9
|
+
t.string "record_type"
|
10
|
+
t.text "payload"
|
11
|
+
t.text "request"
|
12
|
+
t.datetime "created_at"
|
13
|
+
t.datetime "updated_at"
|
12
14
|
t.index %w[record_type record_id], using: :btree
|
13
15
|
t.index %w[user_id action], using: :btree
|
14
|
-
t.index [
|
16
|
+
t.index ["action"], using: :btree
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module AuditLog
|
2
4
|
module ControllerHelper
|
3
5
|
# Create an audit log
|
4
6
|
#
|
5
7
|
# audit!(:edit_account, @account, payload: account_params)
|
6
8
|
def audit!(action, record = nil, payload: nil, user: nil)
|
7
|
-
user ||=
|
9
|
+
user ||= send(AuditLog.config.current_user_method.to_sym)
|
8
10
|
AuditLog.audit!(action, record, payload: payload, request: request, user: user)
|
9
11
|
end
|
10
12
|
end
|
data/lib/audit-log/engine.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "./controller_helper"
|
4
4
|
|
5
5
|
module AuditLog
|
6
6
|
class Engine < Rails::Engine
|
@@ -12,7 +12,7 @@ module AuditLog
|
|
12
12
|
|
13
13
|
AuditLog::LogSubscriber.attach_to :audit_log
|
14
14
|
|
15
|
-
initializer
|
15
|
+
initializer "audit-log.assets.precompile", group: :all do |app|
|
16
16
|
app.config.assets.precompile += %w[audit-log/application.css]
|
17
17
|
end
|
18
18
|
end
|
@@ -4,7 +4,7 @@ module AuditLog
|
|
4
4
|
class LogSubscriber < ActiveSupport::LogSubscriber
|
5
5
|
# ActiveSupport::Notifications.instrument('audit.audit_log', action: action)
|
6
6
|
def audit(event)
|
7
|
-
prefix = color(
|
7
|
+
prefix = color("AuditLog", CYAN)
|
8
8
|
action = color(event.payload[:action], BLUE)
|
9
9
|
debug " #{prefix} #{action} (#{event.duration.round(1)}ms)"
|
10
10
|
end
|
data/lib/audit-log/model.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module AuditLog
|
2
4
|
module Model
|
3
5
|
extend ActiveSupport::Concern
|
4
6
|
|
5
7
|
included do
|
6
|
-
self.table_name =
|
8
|
+
self.table_name = AuditLog.config.table_name
|
7
9
|
|
8
10
|
serialize :payload, JSON
|
9
11
|
serialize :request, JSON
|
@@ -22,13 +24,13 @@ module AuditLog
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def user_name
|
25
|
-
return
|
27
|
+
return "none" if user.blank?
|
26
28
|
|
27
|
-
|
29
|
+
user.send(AuditLog.config.user_name_method)
|
28
30
|
end
|
29
31
|
|
30
32
|
def action_name
|
31
|
-
I18n.t("audit_log.action.#{
|
33
|
+
I18n.t("audit_log.action.#{action}", default: action)
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
data/lib/audit-log/version.rb
CHANGED
data/lib/audit-log.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require
|
3
|
+
require_relative "./audit-log/version"
|
4
|
+
require_relative "./audit-log/configuration"
|
5
|
+
require_relative "./audit-log/model"
|
6
|
+
require_relative "./audit-log/log_subscriber"
|
7
|
+
require_relative "./audit-log/engine"
|
8
|
+
require "kaminari"
|
9
9
|
|
10
10
|
module AuditLog
|
11
11
|
class << self
|
@@ -13,9 +13,10 @@ module AuditLog
|
|
13
13
|
return @config if defined?(@config)
|
14
14
|
|
15
15
|
@config = Configuration.new
|
16
|
-
@config.user_class =
|
17
|
-
@config.current_user_method =
|
18
|
-
@config.user_name_method =
|
16
|
+
@config.user_class = "User"
|
17
|
+
@config.current_user_method = "current_user"
|
18
|
+
@config.user_name_method = "name"
|
19
|
+
@config.table_name = "audit_logs"
|
19
20
|
@config
|
20
21
|
end
|
21
22
|
|
@@ -27,7 +28,7 @@ module AuditLog
|
|
27
28
|
#
|
28
29
|
# AuditLog.audit!(:edit_account, @account, payload: account_params, user: current_user)
|
29
30
|
def audit!(action, record = nil, payload: nil, user: nil, request: nil)
|
30
|
-
ActiveSupport::Notifications.instrument(
|
31
|
+
ActiveSupport::Notifications.instrument("audit.audit_log", action: action) do
|
31
32
|
request_info = {}
|
32
33
|
if request
|
33
34
|
request_info = {
|
@@ -55,7 +56,7 @@ module AuditLog
|
|
55
56
|
|
56
57
|
# Get I18n action name options for select
|
57
58
|
def action_options
|
58
|
-
I18n.t(
|
59
|
+
I18n.t("audit_log.action").map { |k, v| [v, k.to_s] }
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -1,19 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "rails/generators"
|
4
4
|
module AuditLog
|
5
5
|
module Generators
|
6
6
|
class InstallGenerator < Rails::Generators::Base
|
7
7
|
desc "Create AuditLog's base files"
|
8
|
-
source_root File.expand_path(
|
8
|
+
source_root File.expand_path("../../..", __dir__)
|
9
9
|
|
10
10
|
def add_initializer
|
11
|
-
template
|
12
|
-
template
|
11
|
+
template "config/initializers/audit-log.rb", "config/initializers/audit-log.rb"
|
12
|
+
template "config/locales/audit-log.yml", "config/locales/audit-log.yml"
|
13
13
|
end
|
14
14
|
|
15
15
|
def add_migrations
|
16
|
-
exec(
|
16
|
+
exec("rake audit_log:install:migrations")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audit-log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Lee
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kaminari
|
@@ -30,28 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.2'
|
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: '
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mysql2
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
40
|
+
version: '5.2'
|
55
41
|
description: Trail audit logs (Operation logs) into the database for user behaviors,
|
56
42
|
including a web UI to query logs.
|
57
43
|
email:
|
@@ -85,7 +71,7 @@ homepage: https://github.com/rails-engine/audit-log
|
|
85
71
|
licenses:
|
86
72
|
- MIT
|
87
73
|
metadata: {}
|
88
|
-
post_install_message:
|
74
|
+
post_install_message:
|
89
75
|
rdoc_options: []
|
90
76
|
require_paths:
|
91
77
|
- lib
|
@@ -100,8 +86,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
86
|
- !ruby/object:Gem::Version
|
101
87
|
version: '0'
|
102
88
|
requirements: []
|
103
|
-
rubygems_version: 3.
|
104
|
-
signing_key:
|
89
|
+
rubygems_version: 3.3.12
|
90
|
+
signing_key:
|
105
91
|
specification_version: 4
|
106
92
|
summary: Trail audit logs (Operation logs) into the database for user behaviors, including
|
107
93
|
a web UI to query logs
|