loggable_activity 0.1.59 → 0.2.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/.vscode/commands.json +26 -0
- data/.vscode/terminals.json +31 -0
- data/CHANGELOG.md +3 -0
- data/lib/generators/loggable_activity/templates/create_loggable_activities.rb +1 -0
- data/lib/loggable_activity/activity.rb +18 -1
- data/lib/loggable_activity/configuration.rb +6 -0
- data/lib/loggable_activity/encryption_key.rb +16 -4
- data/lib/loggable_activity/hooks.rb +1 -0
- data/lib/loggable_activity/sanitizer.rb +9 -0
- data/lib/loggable_activity/version.rb +1 -1
- data/lib/loggable_activity.rb +1 -0
- data/lib/schemas/config_schema.json +7 -1
- metadata +40 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c639f2566d6a3dd820a7657b9b8bb398e5a861347ae1bc7d7474724c6c344b4c
|
|
4
|
+
data.tar.gz: 8551b4aab8f630be997b6af7b8372d7efd84221824bbacb25bb6c444f6c83978
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 03422fe2e2d154f894da7a0eab5fac78f1048b6e6d3d4addbf1fa0bd66d9a674913ca666a4a4e743cbaf95ff5edbfb8711641596330b370d5d29d3e0922f4af6
|
|
7
|
+
data.tar.gz: '08de4b66e4aba0d210be64f83eb78b51fcb6c351d3340e9f1dfba334194d5c6a705daeefe6f66aae8a7cc8409a94b1ba4ec33d222a957e549b0811629f6ebfcb'
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"commands": [
|
|
3
|
+
{
|
|
4
|
+
"command": "terminals.runTerminalByName",
|
|
5
|
+
"arguments": [
|
|
6
|
+
"Test"
|
|
7
|
+
],
|
|
8
|
+
"text": "$(run)",
|
|
9
|
+
"alignment": "right",
|
|
10
|
+
"priority": 300,
|
|
11
|
+
"tooltip": "Run test for current line",
|
|
12
|
+
"filterFileRegex": ".*_spec\\.rb"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"command": "terminals.runTerminalByName",
|
|
16
|
+
"arguments": [
|
|
17
|
+
"Test file"
|
|
18
|
+
],
|
|
19
|
+
"text": "$(run-all)",
|
|
20
|
+
"alignment": "right",
|
|
21
|
+
"priority": 290,
|
|
22
|
+
"tooltip": "Run test for current file",
|
|
23
|
+
"filterFileRegex": ".*_spec\\.rb"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"autorun": false,
|
|
3
|
+
"terminals": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Test",
|
|
6
|
+
"focus": true,
|
|
7
|
+
"execute": true,
|
|
8
|
+
"onlySingle": true,
|
|
9
|
+
"icon": "run",
|
|
10
|
+
"commands": [
|
|
11
|
+
"dir=[file] && test_path=${${(s:/spec/:)dir}[1]} && file=\"spec/\"${${(s:/spec/:)dir}[2]}",
|
|
12
|
+
"echo \"$dir\\n$test_path\\n$file:[lineNumber]\"",
|
|
13
|
+
"cd $test_path",
|
|
14
|
+
"rspec $file:[lineNumber]"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "Test file",
|
|
19
|
+
"focus": true,
|
|
20
|
+
"execute": true,
|
|
21
|
+
"onlySingle": true,
|
|
22
|
+
"icon": "run-all",
|
|
23
|
+
"commands": [
|
|
24
|
+
"dir=[file] && test_path=${${(s:/spec/:)dir}[1]} && file=\"spec/\"${${(s:/spec/:)dir}[2]}",
|
|
25
|
+
"echo \"$dir\\n$test_path\\n$file\"",
|
|
26
|
+
"cd $test_path",
|
|
27
|
+
"rspec $file"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
data/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,23 @@ module LoggableActivity
|
|
|
18
18
|
validates :action, presence: true
|
|
19
19
|
validate :must_have_at_least_one_payload
|
|
20
20
|
|
|
21
|
+
RELATION_TYPES = {
|
|
22
|
+
'primary_payload' => 'self',
|
|
23
|
+
'primary_update_payload' => 'self',
|
|
24
|
+
'primary_destroy_payload' => 'self',
|
|
25
|
+
'has_one_payload' => 'has_one',
|
|
26
|
+
'has_one_create_payload' => 'has_one',
|
|
27
|
+
'has_one_update_payload' => 'has_one',
|
|
28
|
+
'has_one_destroy_payload' => 'has_one',
|
|
29
|
+
'has_many_payload' => 'has_many',
|
|
30
|
+
'has_many_create_payload' => 'has_many',
|
|
31
|
+
'has_many_destroy_payload' => 'has_many',
|
|
32
|
+
'has_many_update_payload' => 'has_many',
|
|
33
|
+
'belongs_to_payload' => 'belongs_to',
|
|
34
|
+
'belongs_to_destroy_payload' => 'belongs_to',
|
|
35
|
+
'belongs_to_update_payload' => 'belongs_to'
|
|
36
|
+
}
|
|
37
|
+
|
|
21
38
|
# Returns an array of hashes, each representing an activity's attributes and its associated relations. The structure and relations to include are specified in 'config/loggable_activity.yaml'. This format is designed for UI display purposes.
|
|
22
39
|
#
|
|
23
40
|
# Each hash in the array contains:
|
|
@@ -48,7 +65,7 @@ module LoggableActivity
|
|
|
48
65
|
def payloads_attrs
|
|
49
66
|
ordered_payloads.map do |payload|
|
|
50
67
|
{
|
|
51
|
-
|
|
68
|
+
relation: RELATION_TYPES[payload.related_to_activity_as],
|
|
52
69
|
record_type: payload.record_type,
|
|
53
70
|
record_id: payload.deleted? ? nil : payload.record_id,
|
|
54
71
|
attrs: payload.attrs,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'json-schema'
|
|
4
4
|
require 'json'
|
|
5
|
+
require 'awesome_print'
|
|
5
6
|
|
|
6
7
|
module LoggableActivity
|
|
7
8
|
# This class is used to load the configuration file located at config/loggable_activity.yml
|
|
@@ -85,5 +86,10 @@ module LoggableActivity
|
|
|
85
86
|
def self.current_user_model_name
|
|
86
87
|
@config_data['current_user_model_name']
|
|
87
88
|
end
|
|
89
|
+
|
|
90
|
+
# Returns whatever models should be sanitized on delete.
|
|
91
|
+
def self.task_for_sanitization
|
|
92
|
+
@config_data['task_for_sanitization']
|
|
93
|
+
end
|
|
88
94
|
end
|
|
89
95
|
end
|
|
@@ -14,16 +14,28 @@ module LoggableActivity
|
|
|
14
14
|
# belongs_to :parent_key, class_name: '::LoggableActivity::EncryptionKey', optional: true,
|
|
15
15
|
# foreign_key: 'parent_key_id'
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# Prepare the record for deletion
|
|
18
18
|
def mark_as_deleted!
|
|
19
|
-
update(
|
|
19
|
+
LoggableActivity::Configuration.task_for_sanitization ? update(delete_at: DateTime.now + 1.month) : delete
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
# check if the encryption key is deleted
|
|
22
|
+
# check if the encryption key is deleted or it is about to be deleted
|
|
23
23
|
def deleted?
|
|
24
|
-
secret_key.nil?
|
|
24
|
+
secret_key.nil? || delete_at.present?
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
# Delete the encryption key by updating the key to nil.
|
|
28
|
+
def delete
|
|
29
|
+
update(secret_key: nil, delete_at: nil)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Restores the encryption key by updating the delete_at field to nil.
|
|
33
|
+
def restore!
|
|
34
|
+
update(delete_at: nil) if delete_at && DateTime.now < delete_at
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
27
39
|
# Returns an encryption key for a record by its type and ID, optionally using a parent key.
|
|
28
40
|
#
|
|
29
41
|
# @param record_type [String] The type of the record.
|
data/lib/loggable_activity.rb
CHANGED
|
@@ -9,6 +9,7 @@ require_relative 'loggable_activity/data_owner'
|
|
|
9
9
|
require_relative 'loggable_activity/hooks'
|
|
10
10
|
require_relative 'loggable_activity/payload'
|
|
11
11
|
require_relative 'loggable_activity/error'
|
|
12
|
+
require_relative 'loggable_activity/sanitizer'
|
|
12
13
|
require_relative 'loggable_activity/services/base_payloads_builder'
|
|
13
14
|
require_relative 'loggable_activity/services/payloads_builder'
|
|
14
15
|
require_relative 'loggable_activity/services/update_payloads_builder'
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
},
|
|
8
8
|
"fetch_current_user_name_from": {
|
|
9
9
|
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"task_for_sanitization": {
|
|
12
|
+
"type": "boolean"
|
|
10
13
|
}
|
|
11
14
|
},
|
|
12
15
|
"patternProperties": {
|
|
13
|
-
"^(?!current_user_model_name$|fetch_current_user_name_from
|
|
16
|
+
"^(?!current_user_model_name$|fetch_current_user_name_from$|task_for_sanitization)[A-Za-z0-9_:]+$": {
|
|
14
17
|
"type": "object",
|
|
15
18
|
"properties": {
|
|
16
19
|
"data_owner": {
|
|
@@ -19,6 +22,9 @@
|
|
|
19
22
|
"fetch_record_name_from": {
|
|
20
23
|
"type": "string"
|
|
21
24
|
},
|
|
25
|
+
"task_for_sanitization": {
|
|
26
|
+
"type": "boolean"
|
|
27
|
+
},
|
|
22
28
|
"loggable_attrs": {
|
|
23
29
|
"type": "array",
|
|
24
30
|
"items": {
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: loggable_activity
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "Max \nGroenlund"
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-06-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -92,6 +92,20 @@ dependencies:
|
|
|
92
92
|
- - ">="
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
94
|
version: 6.1.1
|
|
95
|
+
- !ruby/object:Gem::Dependency
|
|
96
|
+
name: rspec-mocks
|
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
|
98
|
+
requirements:
|
|
99
|
+
- - "~>"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '3.13'
|
|
102
|
+
type: :development
|
|
103
|
+
prerelease: false
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - "~>"
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '3.13'
|
|
95
109
|
- !ruby/object:Gem::Dependency
|
|
96
110
|
name: sqlite3
|
|
97
111
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -106,6 +120,26 @@ dependencies:
|
|
|
106
120
|
- - "~>"
|
|
107
121
|
- !ruby/object:Gem::Version
|
|
108
122
|
version: 1.4.2
|
|
123
|
+
- !ruby/object:Gem::Dependency
|
|
124
|
+
name: awesome_print
|
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - "~>"
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: '1.9'
|
|
130
|
+
- - ">="
|
|
131
|
+
- !ruby/object:Gem::Version
|
|
132
|
+
version: 1.9.2
|
|
133
|
+
type: :development
|
|
134
|
+
prerelease: false
|
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
136
|
+
requirements:
|
|
137
|
+
- - "~>"
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
version: '1.9'
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: 1.9.2
|
|
109
143
|
- !ruby/object:Gem::Dependency
|
|
110
144
|
name: factory_bot
|
|
111
145
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,6 +198,8 @@ files:
|
|
|
164
198
|
- ".rspec"
|
|
165
199
|
- ".rspec_status"
|
|
166
200
|
- ".rubocop.yml"
|
|
201
|
+
- ".vscode/commands.json"
|
|
202
|
+
- ".vscode/terminals.json"
|
|
167
203
|
- CHANGELOG.md
|
|
168
204
|
- CODE_OF_CONDUCT.md
|
|
169
205
|
- CONSIDERTIONS.md
|
|
@@ -254,6 +290,7 @@ files:
|
|
|
254
290
|
- lib/loggable_activity/error.rb
|
|
255
291
|
- lib/loggable_activity/hooks.rb
|
|
256
292
|
- lib/loggable_activity/payload.rb
|
|
293
|
+
- lib/loggable_activity/sanitizer.rb
|
|
257
294
|
- lib/loggable_activity/services/base_payloads_builder.rb
|
|
258
295
|
- lib/loggable_activity/services/destroy_payloads_builder.rb
|
|
259
296
|
- lib/loggable_activity/services/payloads_builder.rb
|
|
@@ -286,7 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
286
323
|
- !ruby/object:Gem::Version
|
|
287
324
|
version: '0'
|
|
288
325
|
requirements: []
|
|
289
|
-
rubygems_version: 3.5.
|
|
326
|
+
rubygems_version: 3.5.7
|
|
290
327
|
signing_key:
|
|
291
328
|
specification_version: 4
|
|
292
329
|
summary: Activity Logger with relations, prepared for GDPR Compliance and .
|