yes-auth 1.0.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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +137 -0
  5. data/lib/yes/auth/cerbos/read_resource_access/principal_attributes.rb +49 -0
  6. data/lib/yes/auth/cerbos/read_resource_access/principal_data.rb +59 -0
  7. data/lib/yes/auth/cerbos/write_resource_access/principal_attributes.rb +49 -0
  8. data/lib/yes/auth/cerbos/write_resource_access/principal_data.rb +59 -0
  9. data/lib/yes/auth/principals/read_resource_access.rb +23 -0
  10. data/lib/yes/auth/principals/role.rb +36 -0
  11. data/lib/yes/auth/principals/user.rb +69 -0
  12. data/lib/yes/auth/principals/write_resource_access.rb +23 -0
  13. data/lib/yes/auth/railtie.rb +17 -0
  14. data/lib/yes/auth/read_models/principals/read_resource_access/builder.rb +24 -0
  15. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_principal_assigned.rb +20 -0
  16. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_removed.rb +20 -0
  17. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_assigned.rb +20 -0
  18. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_type_changed.rb +20 -0
  19. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_role_changed.rb +20 -0
  20. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_scope_changed.rb +20 -0
  21. data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_service_changed.rb +20 -0
  22. data/lib/yes/auth/read_models/principals/role/builder.rb +24 -0
  23. data/lib/yes/auth/read_models/principals/role/on_role_name_changed.rb +20 -0
  24. data/lib/yes/auth/read_models/principals/user/builder.rb +24 -0
  25. data/lib/yes/auth/read_models/principals/user/on_principal_attribute_changed.rb +23 -0
  26. data/lib/yes/auth/read_models/principals/user/on_principal_identity_assigned.rb +20 -0
  27. data/lib/yes/auth/read_models/principals/user/on_principal_removed.rb +20 -0
  28. data/lib/yes/auth/read_models/principals/user/on_principal_role_added.rb +24 -0
  29. data/lib/yes/auth/read_models/principals/user/on_principal_role_removed.rb +24 -0
  30. data/lib/yes/auth/read_models/principals/write_resource_access/builder.rb +24 -0
  31. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_attribute_changed.rb +23 -0
  32. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_context_changed.rb +20 -0
  33. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_principal_assigned.rb +20 -0
  34. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_removed.rb +20 -0
  35. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_assigned.rb +20 -0
  36. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_type_changed.rb +20 -0
  37. data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_role_changed.rb +20 -0
  38. data/lib/yes/auth/subscriptions.rb +57 -0
  39. data/lib/yes/auth/version.rb +7 -0
  40. data/lib/yes/auth.rb +27 -0
  41. metadata +112 -0
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module ReadResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnReadResourceAccessRoleChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(role_id: event.data['role_id'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module ReadResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnReadResourceAccessScopeChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(scope: event.data['scope'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module ReadResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnReadResourceAccessServiceChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(service: event.data['service'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module Role
8
+ # @see Yes::Core::ReadModel::Builder
9
+ class Builder < Yes::Core::ReadModel::Builder
10
+ private
11
+
12
+ def default_read_model_class
13
+ Yes::Auth::Principals::Role
14
+ end
15
+
16
+ def aggregate_id_key
17
+ 'role_id'
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module Role
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnRoleNameChanged < Yes::Core::ReadModel::EventHandler
10
+ def call(event)
11
+ super
12
+
13
+ read_model.update_columns(name: event.data['name'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::Builder
9
+ class Builder < Yes::Core::ReadModel::Builder
10
+ private
11
+
12
+ def default_read_model_class
13
+ Yes::Auth::Principals::User
14
+ end
15
+
16
+ def aggregate_id_key
17
+ 'principal_id'
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnPrincipalAttributeChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ auth_attributes = read_model.auth_attributes || {}
14
+ auth_attributes[event.data['name']] = event.data['value']
15
+
16
+ read_model.update_columns(auth_attributes:)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnPrincipalIdentityAssigned < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(identity_id: event.data['identity_id'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnPrincipalRemoved < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(_event)
13
+ read_model.delete
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnPrincipalRoleAdded < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ user = Yes::Auth::Principals::User.find_or_create_by(id: event.data['principal_id'])
14
+ role = Yes::Auth::Principals::Role.find_or_create_by(id: event.data['role_id'])
15
+ user.roles << role
16
+ rescue ActiveRecord::RecordNotUnique
17
+ Rails.logger.info("Role(#{event.data['role_id']}) already added to user(#{event.data['principal_id']})")
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module User
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnPrincipalRoleRemoved < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ user = Yes::Auth::Principals::User.find_by(id: event.data['principal_id'])
14
+ role = Yes::Auth::Principals::Role.find_by(id: event.data['role_id'])
15
+ return unless user && role
16
+
17
+ user.roles.delete(role)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -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
+ # @see Yes::Core::ReadModel::Builder
9
+ class Builder < Yes::Core::ReadModel::Builder
10
+ private
11
+
12
+ def default_read_model_class
13
+ Yes::Auth::Principals::WriteResourceAccess
14
+ end
15
+
16
+ def aggregate_id_key
17
+ 'write_resource_access_id'
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessAttributeChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ auth_attributes = read_model.auth_attributes || {}
14
+ auth_attributes[event.data['name']] = event.data['value']
15
+
16
+ read_model.update_columns(auth_attributes:)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessContextChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(context: event.data['context'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessPrincipalAssigned < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(principal_id: event.data['principal_id'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessRemoved < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(_event)
13
+ read_model.delete
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessResourceAssigned < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(resource_id: event.data['resource_id'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessResourceTypeChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(resource_type: event.data['resource_type'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ module ReadModels
6
+ module Principals
7
+ module WriteResourceAccess
8
+ # @see Yes::Core::ReadModel::EventHandler
9
+ class OnWriteResourceAccessRoleChanged < Yes::Core::ReadModel::EventHandler
10
+ # @param event [Yes::Core::Event]
11
+ # @return [void]
12
+ def call(event)
13
+ read_model.update_columns(role_id: event.data['role_id'])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ # Wires authorization event builders to the appropriate subscriptions.
6
+ #
7
+ # Role, User, WriteResourceAccess, and ReadResourceAccess builders
8
+ # are registered via the yes-core ReadModel::Builder pattern.
9
+ class Subscriptions
10
+ # @param subscriptions [Object] the subscription registry
11
+ # @return [void]
12
+ def self.call(subscriptions)
13
+ subscriptions.subscribe_to_all(
14
+ Yes::Auth::ReadModels::Principals::Role::Builder.new,
15
+ { event_types: ['Authorization::RoleNameChanged'] }
16
+ )
17
+
18
+ subscriptions.subscribe_to_all(
19
+ Yes::Auth::ReadModels::Principals::User::Builder.new,
20
+ { event_types: [
21
+ 'Authorization::PrincipalRoleAdded',
22
+ 'Authorization::PrincipalRoleRemoved',
23
+ 'Authorization::PrincipalAttributeChanged',
24
+ 'Authorization::PrincipalIdentityAssigned',
25
+ 'Authorization::PrincipalRemoved'
26
+ ] }
27
+ )
28
+
29
+ subscriptions.subscribe_to_all(
30
+ Yes::Auth::ReadModels::Principals::WriteResourceAccess::Builder.new,
31
+ { event_types: [
32
+ 'Authorization::WriteResourceAccessAttributeChanged',
33
+ 'Authorization::WriteResourceAccessContextChanged',
34
+ 'Authorization::WriteResourceAccessPrincipalAssigned',
35
+ 'Authorization::WriteResourceAccessRemoved',
36
+ 'Authorization::WriteResourceAccessResourceAssigned',
37
+ 'Authorization::WriteResourceAccessResourceTypeChanged',
38
+ 'Authorization::WriteResourceAccessRoleChanged'
39
+ ] }
40
+ )
41
+
42
+ subscriptions.subscribe_to_all(
43
+ Yes::Auth::ReadModels::Principals::ReadResourceAccess::Builder.new,
44
+ { event_types: [
45
+ 'Authorization::ReadResourceAccessPrincipalAssigned',
46
+ 'Authorization::ReadResourceAccessResourceTypeChanged',
47
+ 'Authorization::ReadResourceAccessRemoved',
48
+ 'Authorization::ReadResourceAccessResourceAssigned',
49
+ 'Authorization::ReadResourceAccessRoleChanged',
50
+ 'Authorization::ReadResourceAccessScopeChanged',
51
+ 'Authorization::ReadResourceAccessServiceChanged'
52
+ ] }
53
+ )
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yes
4
+ module Auth
5
+ VERSION = '1.0.0'
6
+ end
7
+ end
data/lib/yes/auth.rb ADDED
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yes/core'
4
+ require 'zeitwerk'
5
+
6
+ module Yes
7
+ module Auth
8
+ class << self
9
+ # @return [Zeitwerk::Loader] the configured Zeitwerk loader for yes-auth
10
+ def loader
11
+ @loader ||= begin
12
+ loader = Zeitwerk::Loader.new
13
+ loader.tag = 'yes-auth'
14
+ loader.push_dir(File.expand_path('..', __dir__))
15
+ loader.ignore("#{__dir__}/auth/version.rb")
16
+ loader.ignore("#{__dir__}/auth/railtie.rb")
17
+ loader.setup
18
+ loader
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ require_relative 'auth/version'
26
+ require_relative 'auth/railtie' if defined?(Rails::Railtie)
27
+ Yes::Auth.loader.eager_load
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yes-auth
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nico Ritsche
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '7.1'
26
+ - !ruby/object:Gem::Dependency
27
+ name: yes-core
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ description: Provides authorization principal models (User, Role, ResourceAccess)
41
+ and Cerbos integration for the Yes framework
42
+ email:
43
+ - nico.ritsche@yousty.ch
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - CHANGELOG.md
49
+ - LICENSE.txt
50
+ - README.md
51
+ - lib/yes/auth.rb
52
+ - lib/yes/auth/cerbos/read_resource_access/principal_attributes.rb
53
+ - lib/yes/auth/cerbos/read_resource_access/principal_data.rb
54
+ - lib/yes/auth/cerbos/write_resource_access/principal_attributes.rb
55
+ - lib/yes/auth/cerbos/write_resource_access/principal_data.rb
56
+ - lib/yes/auth/principals/read_resource_access.rb
57
+ - lib/yes/auth/principals/role.rb
58
+ - lib/yes/auth/principals/user.rb
59
+ - lib/yes/auth/principals/write_resource_access.rb
60
+ - lib/yes/auth/railtie.rb
61
+ - lib/yes/auth/read_models/principals/read_resource_access/builder.rb
62
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_principal_assigned.rb
63
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_removed.rb
64
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_assigned.rb
65
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_type_changed.rb
66
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_role_changed.rb
67
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_scope_changed.rb
68
+ - lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_service_changed.rb
69
+ - lib/yes/auth/read_models/principals/role/builder.rb
70
+ - lib/yes/auth/read_models/principals/role/on_role_name_changed.rb
71
+ - lib/yes/auth/read_models/principals/user/builder.rb
72
+ - lib/yes/auth/read_models/principals/user/on_principal_attribute_changed.rb
73
+ - lib/yes/auth/read_models/principals/user/on_principal_identity_assigned.rb
74
+ - lib/yes/auth/read_models/principals/user/on_principal_removed.rb
75
+ - lib/yes/auth/read_models/principals/user/on_principal_role_added.rb
76
+ - lib/yes/auth/read_models/principals/user/on_principal_role_removed.rb
77
+ - lib/yes/auth/read_models/principals/write_resource_access/builder.rb
78
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_attribute_changed.rb
79
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_context_changed.rb
80
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_principal_assigned.rb
81
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_removed.rb
82
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_assigned.rb
83
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_type_changed.rb
84
+ - lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_role_changed.rb
85
+ - lib/yes/auth/subscriptions.rb
86
+ - lib/yes/auth/version.rb
87
+ homepage: https://github.com/yousty/yes
88
+ licenses:
89
+ - MIT
90
+ metadata:
91
+ homepage_uri: https://github.com/yousty/yes
92
+ source_code_uri: https://github.com/yousty/yes/tree/main/yes-auth
93
+ changelog_uri: https://github.com/yousty/yes/blob/main/yes-auth/CHANGELOG.md
94
+ rubygems_mfa_required: 'true'
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.2.0
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubygems_version: 3.6.9
110
+ specification_version: 4
111
+ summary: Authorization principals for the Yes event sourcing framework
112
+ test_files: []