gdpr_admin 1.4.2 → 1.6.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 +8 -0
- data/app/models/gdpr_admin/request.rb +9 -3
- data/db/migrate/20230212185817_create_gdpr_admin_requests.rb +1 -1
- data/db/migrate/20230417104258_add_subject_to_gdpr_admin_requests.rb +7 -0
- data/lib/gdpr_admin/application_data_policy.rb +9 -3
- data/lib/gdpr_admin/configuration.rb +1 -2
- data/lib/gdpr_admin/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8f6f1437e957b783de64f6a16847142b7eff9ebf14428b8c1d6d8db4011dcde
|
4
|
+
data.tar.gz: 4ea36ea2245d25a95883501dbe7727149bb1f971c4e5f1de27c00621f7526f69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 931d742f6e132f9aac3ebf5babf2cf3596b49827830cb90dc5c169f4b8fd570c45ce43a0be4b76c62bea487b2b0bbe1dc643d8486f7e9e58ff35610c4313b77b
|
7
|
+
data.tar.gz: 9f19d2ad664ea3dd95b73524ca914e4f1cd2bdcacfd83a305a2128443bee3036da70002f21bb9487614b4593c2350d0a815f36d70239a2005b34f6a1e27d83a1
|
data/README.md
CHANGED
@@ -47,12 +47,20 @@ Implement the methods `#scope`, `#export` and `#erase` for the new data policy.
|
|
47
47
|
able to access the `GdprAdmin::Request` object in any method by calling the method `request` - you can, therefore, have
|
48
48
|
different scopes and different removal behaviors depending on the request.
|
49
49
|
|
50
|
+
Optinally, you may declare a `#subject_scope` method with logic for scoping subject data. If this method is not present,
|
51
|
+
it will fallback to the `#scope` method.
|
52
|
+
|
50
53
|
```ruby
|
51
54
|
class UserDataPolicy < GdprAdmin::ApplicationDataPolicy
|
52
55
|
def scope
|
53
56
|
User.with_deleted.where(updated_at: ...request.data_older_than)
|
54
57
|
end
|
55
58
|
|
59
|
+
# Optional
|
60
|
+
def subject_scope
|
61
|
+
scope.where(email: request.subject)
|
62
|
+
end
|
63
|
+
|
56
64
|
def erase(user)
|
57
65
|
user.update_columns(
|
58
66
|
first_name: 'Anonymous',
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module GdprAdmin
|
4
4
|
class Request < ApplicationRecord
|
5
5
|
belongs_to :tenant, class_name: GdprAdmin.config.tenant_class
|
6
|
-
belongs_to :requester,
|
6
|
+
belongs_to :requester, polymorphic: true, optional: true
|
7
7
|
|
8
8
|
VALID_STATUS_TRANSITIONS = {
|
9
9
|
pending: %i[processing],
|
@@ -29,20 +29,26 @@ module GdprAdmin
|
|
29
29
|
after_create_commit :schedule_processing
|
30
30
|
|
31
31
|
validates :status, presence: true
|
32
|
+
validates :subject, presence: true, if: :subject_request?
|
33
|
+
validates :subject, absence: true, unless: :subject_request?
|
32
34
|
validate :valid_status_transition?
|
33
35
|
|
34
36
|
def process!
|
35
37
|
GdprAdmin.load_data_policies
|
36
|
-
with_lock { processing! }
|
38
|
+
reload.with_lock { processing! }
|
37
39
|
with_lock do
|
38
40
|
process_policies
|
39
41
|
completed!
|
40
42
|
end
|
41
43
|
rescue StandardError
|
42
|
-
|
44
|
+
failed!
|
43
45
|
raise
|
44
46
|
end
|
45
47
|
|
48
|
+
def subject_request?
|
49
|
+
export_subject? || erase_subject?
|
50
|
+
end
|
51
|
+
|
46
52
|
def erase?
|
47
53
|
erase_data? || erase_subject?
|
48
54
|
end
|
@@ -4,7 +4,7 @@ class CreateGdprAdminRequests < ActiveRecord::Migration[7.0]
|
|
4
4
|
def change
|
5
5
|
create_table :gdpr_admin_requests do |t|
|
6
6
|
t.references :tenant, null: false, foreign_key: { to_table: :organizations }
|
7
|
-
t.references :requester, null: true,
|
7
|
+
t.references :requester, null: true, polymorphic: true
|
8
8
|
t.string :request_type, null: false
|
9
9
|
t.string :status, default: 'pending', null: false
|
10
10
|
t.datetime :data_older_than, null: false
|
@@ -43,14 +43,14 @@ module GdprAdmin
|
|
43
43
|
def process
|
44
44
|
GdprAdmin.config.tenant_adapter.with_tenant(request.tenant) do
|
45
45
|
run_preprocessors
|
46
|
-
process_scope
|
46
|
+
process_scope
|
47
47
|
rescue SkipDataPolicyError
|
48
48
|
nil
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
def process_scope
|
53
|
-
|
52
|
+
def process_scope
|
53
|
+
policy_scope.find_each do |record|
|
54
54
|
process_record(record)
|
55
55
|
end
|
56
56
|
end
|
@@ -59,6 +59,12 @@ module GdprAdmin
|
|
59
59
|
|
60
60
|
attr_reader :request
|
61
61
|
|
62
|
+
def policy_scope
|
63
|
+
return subject_scope if request.subject_request? && respond_to?(:subject_scope)
|
64
|
+
|
65
|
+
scope
|
66
|
+
end
|
67
|
+
|
62
68
|
def process_record(record)
|
63
69
|
run_record_preprocessors(record)
|
64
70
|
export(record) if request.export?
|
@@ -2,13 +2,12 @@
|
|
2
2
|
|
3
3
|
module GdprAdmin
|
4
4
|
class Configuration
|
5
|
-
attr_accessor :tenant_class, :
|
5
|
+
attr_accessor :tenant_class, :data_policies_path, :default_job_queue,
|
6
6
|
:erasure_grace_period, :export_grace_period
|
7
7
|
attr_writer :tenant_adapter
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@tenant_class = 'Organization'
|
11
|
-
@requester_class = 'AdminUser'
|
12
11
|
@tenant_adapter = TenantAdapters::ActsAsTenantAdapter.new
|
13
12
|
@data_policies_path = Rails.root.join('app', 'gdpr')
|
14
13
|
@default_job_queue = :default
|
data/lib/gdpr_admin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gdpr_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Colex
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- config/routes.rb
|
157
157
|
- db/migrate/20230212185817_create_gdpr_admin_requests.rb
|
158
158
|
- db/migrate/20230216171202_create_gdpr_admin_data_retention_policies.rb
|
159
|
+
- db/migrate/20230417104258_add_subject_to_gdpr_admin_requests.rb
|
159
160
|
- lib/gdpr_admin.rb
|
160
161
|
- lib/gdpr_admin/anonymizers/company_anonymizer.rb
|
161
162
|
- lib/gdpr_admin/anonymizers/contact_anonymizer.rb
|