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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +21 -0
- data/README.md +137 -0
- data/lib/yes/auth/cerbos/read_resource_access/principal_attributes.rb +49 -0
- data/lib/yes/auth/cerbos/read_resource_access/principal_data.rb +59 -0
- data/lib/yes/auth/cerbos/write_resource_access/principal_attributes.rb +49 -0
- data/lib/yes/auth/cerbos/write_resource_access/principal_data.rb +59 -0
- data/lib/yes/auth/principals/read_resource_access.rb +23 -0
- data/lib/yes/auth/principals/role.rb +36 -0
- data/lib/yes/auth/principals/user.rb +69 -0
- data/lib/yes/auth/principals/write_resource_access.rb +23 -0
- data/lib/yes/auth/railtie.rb +17 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/builder.rb +24 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_principal_assigned.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_removed.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_assigned.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_resource_type_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_role_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_scope_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/read_resource_access/on_read_resource_access_service_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/role/builder.rb +24 -0
- data/lib/yes/auth/read_models/principals/role/on_role_name_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/user/builder.rb +24 -0
- data/lib/yes/auth/read_models/principals/user/on_principal_attribute_changed.rb +23 -0
- data/lib/yes/auth/read_models/principals/user/on_principal_identity_assigned.rb +20 -0
- data/lib/yes/auth/read_models/principals/user/on_principal_removed.rb +20 -0
- data/lib/yes/auth/read_models/principals/user/on_principal_role_added.rb +24 -0
- data/lib/yes/auth/read_models/principals/user/on_principal_role_removed.rb +24 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/builder.rb +24 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_attribute_changed.rb +23 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_context_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_principal_assigned.rb +20 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_removed.rb +20 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_assigned.rb +20 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_resource_type_changed.rb +20 -0
- data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_role_changed.rb +20 -0
- data/lib/yes/auth/subscriptions.rb +57 -0
- data/lib/yes/auth/version.rb +7 -0
- data/lib/yes/auth.rb +27 -0
- 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
|
data/lib/yes/auth/read_models/principals/write_resource_access/on_write_resource_access_removed.rb
ADDED
|
@@ -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
|
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: []
|