yes-auth 1.3.0 → 2.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/CHANGELOG.md +12 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_restored.rb +24 -0
- data/lib/yes/auth/read_models/principals/restore_replay.rb +46 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_restored.rb +24 -0
- data/lib/yes/auth/subscriptions.rb +2 -0
- data/lib/yes/auth/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f82bf0d2cfe44a9db4cbb50d00bdb688ef59e6d0dc0bb0602bc26c4c7f54821e
|
|
4
|
+
data.tar.gz: b5d1bbdd8994ecd3417f3125dd6bf32130a7947b5167b414201f0da4d4974214
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f78cd81ef54c5ca5d467cf888fdea42579c605e86c2b0239203f586d1cff47ce38fda1b207f7dce908041bed137043f3c5893c352f54d76e6c5ba3779d2f0349
|
|
7
|
+
data.tar.gz: cbabfbdeb1afefccebe6f6d9a9f04411b3f0a22bef458ea45b82f884fade8b55466e179573b8d609e85144bb186dcafdb4d93972036d7970a4950908e72c263f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.2.0] - 2026-09-01
|
|
4
|
+
|
|
5
|
+
- See root CHANGELOG.md for details.
|
|
6
|
+
|
|
7
|
+
## [1.4.0] - 2026-06-24
|
|
8
|
+
|
|
9
|
+
- See root CHANGELOG.md for details.
|
|
10
|
+
|
|
11
|
+
## [1.3.1] - 2026-06-16
|
|
12
|
+
|
|
13
|
+
- See root CHANGELOG.md for details.
|
|
14
|
+
|
|
3
15
|
## [1.3.0] - 2026-05-18
|
|
4
16
|
|
|
5
17
|
- See root CHANGELOG.md for details.
|
data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_restored.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Yes
|
|
4
|
+
module Auth
|
|
5
|
+
module ReadModels
|
|
6
|
+
module Principals
|
|
7
|
+
module ReadResourceAccess
|
|
8
|
+
# Rebuilds the mirror row after the aggregate was restored.
|
|
9
|
+
#
|
|
10
|
+
# The row was hard-deleted by {OnReadResourceAccessRemoved}; the
|
|
11
|
+
# builder recreates it blank during read-model resolution, and the
|
|
12
|
+
# stream replay fills the attributes back in (see {RestoreReplay}).
|
|
13
|
+
class OnReadResourceAccessRestored < Yes::Core::ReadModel::EventHandler
|
|
14
|
+
# @param event [Yes::Core::Event]
|
|
15
|
+
# @return [void]
|
|
16
|
+
def call(_event)
|
|
17
|
+
RestoreReplay.new(builder: Builder.new, stream_name: 'ReadResourceAccess').call(read_model)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Yes
|
|
4
|
+
module Auth
|
|
5
|
+
module ReadModels
|
|
6
|
+
module Principals
|
|
7
|
+
# Rebuilds a hard-deleted principals mirror row after an
|
|
8
|
+
# `Authorization::...Restored` event.
|
|
9
|
+
#
|
|
10
|
+
# The `On...Removed` handlers delete mirror rows, and `Restored`
|
|
11
|
+
# events carry no state snapshot. The aggregate's stream is replayed
|
|
12
|
+
# through the builder's regular per-field event handlers to
|
|
13
|
+
# reconstruct the row instead. Lifecycle events are excluded from the
|
|
14
|
+
# replay: a `Removed` would delete (and freeze) the row mid-replay,
|
|
15
|
+
# a `Restored` would recurse.
|
|
16
|
+
class RestoreReplay
|
|
17
|
+
CONTEXT = 'Authorization'
|
|
18
|
+
LIFECYCLE_EVENT_TYPES = /(?:Removed|Restored)\z/
|
|
19
|
+
|
|
20
|
+
# @param builder [Yes::Core::ReadModel::Builder] builder whose handlers replay the events
|
|
21
|
+
# @param stream_name [String] aggregate stream name, e.g. 'WriteResourceAccess'
|
|
22
|
+
def initialize(builder:, stream_name:)
|
|
23
|
+
@builder = builder
|
|
24
|
+
@stream_name = stream_name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @param read_model [ActiveRecord::Base] the freshly (re)created mirror row
|
|
28
|
+
# @param eventstore [PgEventstore::Client]
|
|
29
|
+
# @return [void]
|
|
30
|
+
def call(read_model, eventstore: PgEventstore.client)
|
|
31
|
+
stream = PgEventstore::Stream.new(
|
|
32
|
+
context: CONTEXT, stream_name: @stream_name, stream_id: read_model.id
|
|
33
|
+
)
|
|
34
|
+
eventstore.read_paginated(stream, options: { resolve_link_tos: true }).each do |events|
|
|
35
|
+
events.each do |event|
|
|
36
|
+
next if event.type.match?(LIFECYCLE_EVENT_TYPES)
|
|
37
|
+
|
|
38
|
+
@builder.call(event, read_model:)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_restored.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Yes
|
|
4
|
+
module Auth
|
|
5
|
+
module ReadModels
|
|
6
|
+
module Principals
|
|
7
|
+
module WriteResourceAccess
|
|
8
|
+
# Rebuilds the mirror row after the aggregate was restored.
|
|
9
|
+
#
|
|
10
|
+
# The row was hard-deleted by {OnWriteResourceAccessRemoved}; the
|
|
11
|
+
# builder recreates it blank during read-model resolution, and the
|
|
12
|
+
# stream replay fills the attributes back in (see {RestoreReplay}).
|
|
13
|
+
class OnWriteResourceAccessRestored < Yes::Core::ReadModel::EventHandler
|
|
14
|
+
# @param event [Yes::Core::Event]
|
|
15
|
+
# @return [void]
|
|
16
|
+
def call(_event)
|
|
17
|
+
RestoreReplay.new(builder: Builder.new, stream_name: 'WriteResourceAccess').call(read_model)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -35,6 +35,7 @@ module Yes
|
|
|
35
35
|
'Authorization::WriteResourceAccessRemoved',
|
|
36
36
|
'Authorization::WriteResourceAccessResourceAssigned',
|
|
37
37
|
'Authorization::WriteResourceAccessResourceTypeChanged',
|
|
38
|
+
'Authorization::WriteResourceAccessRestored',
|
|
38
39
|
'Authorization::WriteResourceAccessRoleChanged'
|
|
39
40
|
] }
|
|
40
41
|
)
|
|
@@ -46,6 +47,7 @@ module Yes
|
|
|
46
47
|
'Authorization::ReadResourceAccessResourceTypeChanged',
|
|
47
48
|
'Authorization::ReadResourceAccessRemoved',
|
|
48
49
|
'Authorization::ReadResourceAccessResourceAssigned',
|
|
50
|
+
'Authorization::ReadResourceAccessRestored',
|
|
49
51
|
'Authorization::ReadResourceAccessRoleChanged',
|
|
50
52
|
'Authorization::ReadResourceAccessScopeChanged',
|
|
51
53
|
'Authorization::ReadResourceAccessServiceChanged'
|
data/lib/yes/auth/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yes-auth
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nico Ritsche
|
|
@@ -29,14 +29,14 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '2.0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '2.0'
|
|
40
40
|
description: Provides authorization principal models (User, Role, ResourceAccess)
|
|
41
41
|
and Cerbos integration for the Yes framework
|
|
42
42
|
email:
|
|
@@ -75,9 +75,11 @@ files:
|
|
|
75
75
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_removed.rb
|
|
76
76
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_assigned.rb
|
|
77
77
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_type_changed.rb
|
|
78
|
+
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_restored.rb
|
|
78
79
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_role_changed.rb
|
|
79
80
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_scope_changed.rb
|
|
80
81
|
- lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_service_changed.rb
|
|
82
|
+
- lib/yes/auth/read_models/principals/restore_replay.rb
|
|
81
83
|
- lib/yes/auth/read_models/principals/role/builder.rb
|
|
82
84
|
- lib/yes/auth/read_models/principals/role/on_role_name_changed.rb
|
|
83
85
|
- lib/yes/auth/read_models/principals/user/builder.rb
|
|
@@ -93,6 +95,7 @@ files:
|
|
|
93
95
|
- lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_removed.rb
|
|
94
96
|
- lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_assigned.rb
|
|
95
97
|
- lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_type_changed.rb
|
|
98
|
+
- lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_restored.rb
|
|
96
99
|
- lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_role_changed.rb
|
|
97
100
|
- lib/yes/auth/subscriptions.rb
|
|
98
101
|
- lib/yes/auth/version.rb
|