two_percent 0.4.0 → 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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -1
  3. data/app/controllers/two_percent/application_controller.rb +79 -1
  4. data/app/controllers/two_percent/bulk_controller.rb +18 -2
  5. data/app/controllers/two_percent/scim_controller.rb +201 -9
  6. data/app/models/two_percent/application_record.rb +7 -0
  7. data/app/models/two_percent/scim_group.rb +182 -0
  8. data/app/models/two_percent/scim_group_membership.rb +29 -0
  9. data/app/models/two_percent/scim_user.rb +138 -0
  10. data/lib/generators/two_percent/install/install_generator.rb +46 -0
  11. data/lib/generators/two_percent/install/templates/INSTALL_README +84 -0
  12. data/lib/generators/two_percent/install/templates/create_two_percent_scim_group_memberships.rb.erb +20 -0
  13. data/lib/generators/two_percent/install/templates/create_two_percent_scim_groups.rb.erb +24 -0
  14. data/lib/generators/two_percent/install/templates/create_two_percent_scim_users.rb.erb +25 -0
  15. data/lib/generators/two_percent/install/templates/two_percent.rb.erb +85 -0
  16. data/lib/two_percent/bulk_processor.rb +145 -5
  17. data/lib/two_percent/configuration.rb +36 -1
  18. data/lib/two_percent/domain/events/base_event.rb +27 -0
  19. data/lib/two_percent/domain/events/group_events.rb +54 -0
  20. data/lib/two_percent/domain/events/user_events.rb +51 -0
  21. data/lib/two_percent/domain/events.rb +16 -0
  22. data/lib/two_percent/domain.rb +8 -0
  23. data/lib/two_percent/scim/patch_processor.rb +119 -0
  24. data/lib/two_percent/scim/schema.rb +152 -0
  25. data/lib/two_percent/scim.rb +8 -0
  26. data/lib/two_percent/syncable.rb +198 -0
  27. data/lib/two_percent/version.rb +1 -1
  28. data/lib/two_percent.rb +7 -1
  29. metadata +27 -16
  30. data/app/events/two_percent/application_event.rb +0 -7
  31. data/app/events/two_percent/create_event.rb +0 -11
  32. data/app/events/two_percent/delete_event.rb +0 -11
  33. data/app/events/two_percent/replace_event.rb +0 -12
  34. data/app/events/two_percent/update_event.rb +0 -12
  35. data/lib/two_percent/event_handler.rb +0 -26
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: two_percent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Palhares
8
8
  - Katie Edgar
9
9
  - Dan Smith
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2025-05-15 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: aether_observatory
@@ -40,8 +39,10 @@ dependencies:
40
39
  - - ">="
41
40
  - !ruby/object:Gem::Version
42
41
  version: '6.1'
43
- description: Adds a thin SCIM interface, and delegates the actions taken on write
44
- calls to observers
42
+ description: TwoPercent is a SCIM 2.0 Rails Engine with partial RFC 7644 protocol
43
+ compliance for IdP provisioning. Supports POST/PUT/PATCH/DELETE/Bulk operations
44
+ for Users and Groups, publishes domain events via AetherObservatory, and integrates
45
+ seamlessly with Rails applications.
45
46
  email:
46
47
  - carlos.palhares@powerhrg.com
47
48
  - katie.weber@powerhrg.com
@@ -55,18 +56,31 @@ files:
55
56
  - app/controllers/two_percent/application_controller.rb
56
57
  - app/controllers/two_percent/bulk_controller.rb
57
58
  - app/controllers/two_percent/scim_controller.rb
58
- - app/events/two_percent/application_event.rb
59
- - app/events/two_percent/create_event.rb
60
- - app/events/two_percent/delete_event.rb
61
- - app/events/two_percent/replace_event.rb
62
- - app/events/two_percent/update_event.rb
59
+ - app/models/two_percent/application_record.rb
60
+ - app/models/two_percent/scim_group.rb
61
+ - app/models/two_percent/scim_group_membership.rb
62
+ - app/models/two_percent/scim_user.rb
63
63
  - config/routes.rb
64
+ - lib/generators/two_percent/install/install_generator.rb
65
+ - lib/generators/two_percent/install/templates/INSTALL_README
66
+ - lib/generators/two_percent/install/templates/create_two_percent_scim_group_memberships.rb.erb
67
+ - lib/generators/two_percent/install/templates/create_two_percent_scim_groups.rb.erb
68
+ - lib/generators/two_percent/install/templates/create_two_percent_scim_users.rb.erb
69
+ - lib/generators/two_percent/install/templates/two_percent.rb.erb
64
70
  - lib/tasks/two_percent_tasks.rake
65
71
  - lib/two_percent.rb
66
72
  - lib/two_percent/bulk_processor.rb
67
73
  - lib/two_percent/configuration.rb
74
+ - lib/two_percent/domain.rb
75
+ - lib/two_percent/domain/events.rb
76
+ - lib/two_percent/domain/events/base_event.rb
77
+ - lib/two_percent/domain/events/group_events.rb
78
+ - lib/two_percent/domain/events/user_events.rb
68
79
  - lib/two_percent/engine.rb
69
- - lib/two_percent/event_handler.rb
80
+ - lib/two_percent/scim.rb
81
+ - lib/two_percent/scim/patch_processor.rb
82
+ - lib/two_percent/scim/schema.rb
83
+ - lib/two_percent/syncable.rb
70
84
  - lib/two_percent/version.rb
71
85
  homepage: https://github.com/powerhome/power-tools
72
86
  licenses:
@@ -76,7 +90,6 @@ metadata:
76
90
  source_code_uri: https://github.com/powerhome/power-tools
77
91
  changelog_uri: https://github.com/powerhome/power-tools/blob/main/packages/two_percent/docs/CHANGELOG.md
78
92
  rubygems_mfa_required: 'true'
79
- post_install_message:
80
93
  rdoc_options: []
81
94
  require_paths:
82
95
  - lib
@@ -91,9 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
104
  - !ruby/object:Gem::Version
92
105
  version: '0'
93
106
  requirements: []
94
- rubygems_version: 3.5.16
95
- signing_key:
107
+ rubygems_version: 3.6.9
96
108
  specification_version: 4
97
- summary: Adds a thin SCIM interface, and delegates the actions taken on write calls
98
- to observers
109
+ summary: SCIM 2.0 Rails Engine for identity provisioning with domain event publishing
99
110
  test_files: []
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class ApplicationEvent < AetherObservatory::EventBase
5
- event_prefix "two_percent.scim"
6
- end
7
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class CreateEvent < ApplicationEvent
5
- event_name "create.all"
6
- event_name { "create.#{resource}" }
7
-
8
- attribute :resource
9
- attribute :params
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class DeleteEvent < ApplicationEvent
5
- event_name "delete.all"
6
- event_name { "delete.#{resource}" }
7
-
8
- attribute :resource
9
- attribute :id
10
- end
11
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class ReplaceEvent < ApplicationEvent
5
- event_name "replace.all"
6
- event_name { "replace.#{resource}" }
7
-
8
- attribute :resource
9
- attribute :id
10
- attribute :params
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class UpdateEvent < ApplicationEvent
5
- event_name "update.all"
6
- event_name { "update.#{resource}" }
7
-
8
- attribute :resource
9
- attribute :id
10
- attribute :params
11
- end
12
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TwoPercent
4
- class EventHandler
5
- def self.dispatch(method, **attrs)
6
- EventHandler.new(method).dispatch(**attrs)
7
- end
8
-
9
- METHOD_EVENT = {
10
- "POST" => "TwoPercent::CreateEvent",
11
- "PATCH" => "TwoPercent::UpdateEvent",
12
- "PUT" => "TwoPercent::ReplaceEvent",
13
- "DELETE" => "TwoPercent::DeleteEvent",
14
- }.freeze
15
-
16
- def initialize(method)
17
- @event = METHOD_EVENT.fetch(method) do
18
- raise "Invalid method #{method}"
19
- end.constantize
20
- end
21
-
22
- def dispatch(**attrs)
23
- @event.create(**attrs)
24
- end
25
- end
26
- end