cnfs-iam 0.0.1.alpha

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 (98) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +75 -0
  4. data/Rakefile +24 -0
  5. data/app/controllers/concerns/is_tenant_scoped.rb +21 -0
  6. data/app/controllers/credentials_controller.rb +23 -0
  7. data/app/controllers/groups_controller.rb +4 -0
  8. data/app/controllers/iam/application_controller.rb +6 -0
  9. data/app/controllers/iam/confirmations_controller.rb +51 -0
  10. data/app/controllers/iam/passwords_controller.rb +56 -0
  11. data/app/controllers/iam/sessions_controller.rb +21 -0
  12. data/app/controllers/policies_controller.rb +4 -0
  13. data/app/controllers/public_keys_controller.rb +4 -0
  14. data/app/controllers/roots/sessions_controller.rb +16 -0
  15. data/app/controllers/roots_controller.rb +4 -0
  16. data/app/controllers/users/confirmations_controller.rb +21 -0
  17. data/app/controllers/users/passwords_controller.rb +25 -0
  18. data/app/controllers/users/sessions_controller.rb +19 -0
  19. data/app/controllers/users_controller.rb +17 -0
  20. data/app/mailers/account_mailer.rb +74 -0
  21. data/app/models/action.rb +6 -0
  22. data/app/models/credential.rb +47 -0
  23. data/app/models/group.rb +15 -0
  24. data/app/models/group_policy_join.rb +25 -0
  25. data/app/models/iam/application_record.rb +7 -0
  26. data/app/models/policy.rb +10 -0
  27. data/app/models/policy_action.rb +6 -0
  28. data/app/models/public_key.rb +17 -0
  29. data/app/models/role.rb +11 -0
  30. data/app/models/role_policy_join.rb +6 -0
  31. data/app/models/root.rb +26 -0
  32. data/app/models/root_credential.rb +7 -0
  33. data/app/models/tenant.rb +68 -0
  34. data/app/models/user.rb +69 -0
  35. data/app/models/user_credential.rb +8 -0
  36. data/app/models/user_group.rb +25 -0
  37. data/app/models/user_policy_join.rb +21 -0
  38. data/app/models/user_role.rb +6 -0
  39. data/app/operations/blackcomb_user_create.rb +49 -0
  40. data/app/operations/user_create.rb +53 -0
  41. data/app/policies/action_policy.rb +3 -0
  42. data/app/policies/credential_policy.rb +3 -0
  43. data/app/policies/group_policy.rb +3 -0
  44. data/app/policies/iam/application_policy.rb +6 -0
  45. data/app/policies/policy_policy.rb +3 -0
  46. data/app/policies/public_key_policy.rb +4 -0
  47. data/app/policies/root_policy.rb +3 -0
  48. data/app/policies/tenant_policy.rb +5 -0
  49. data/app/policies/user_policy.rb +33 -0
  50. data/app/resources/action_resource.rb +16 -0
  51. data/app/resources/credential_resource.rb +13 -0
  52. data/app/resources/group_resource.rb +8 -0
  53. data/app/resources/iam/application_resource.rb +7 -0
  54. data/app/resources/policy_resource.rb +9 -0
  55. data/app/resources/public_key_resource.rb +6 -0
  56. data/app/resources/root_resource.rb +14 -0
  57. data/app/resources/tenant_resource.rb +21 -0
  58. data/app/resources/user_resource.rb +25 -0
  59. data/app/views/layouts/mailer.html.erb +4 -0
  60. data/app/views/user_mailer/confirmation_instructions.html.erb +5 -0
  61. data/app/views/user_mailer/email_changed.html.erb +7 -0
  62. data/app/views/user_mailer/password_change.html.erb +3 -0
  63. data/app/views/user_mailer/reset_password_instructions.html.erb +106 -0
  64. data/app/views/user_mailer/team_welcome.html.erb +107 -0
  65. data/app/views/user_mailer/unlock_instructions.html.erb +7 -0
  66. data/config/environment.rb +0 -0
  67. data/config/initializers/devise.rb +311 -0
  68. data/config/locales/devise.en.yml +65 -0
  69. data/config/routes.rb +17 -0
  70. data/config/sidekiq.yml +5 -0
  71. data/config/spring.rb +3 -0
  72. data/db/migrate/20190101000001_create_policies.rb +11 -0
  73. data/db/migrate/20190101000002_create_actions.rb +13 -0
  74. data/db/migrate/20190101000003_create_policy_actions.rb +13 -0
  75. data/db/migrate/20190215214352_create_roots.rb +43 -0
  76. data/db/migrate/20190215214353_update_tenants.rb +10 -0
  77. data/db/migrate/20190215214355_create_credentials.rb +14 -0
  78. data/db/migrate/20190215214407_create_users.rb +50 -0
  79. data/db/migrate/20190215214409_create_user_credentials.rb +12 -0
  80. data/db/migrate/20190215214410_create_user_policy_joins.rb +12 -0
  81. data/db/migrate/20190215214411_create_groups.rb +11 -0
  82. data/db/migrate/20190215214412_create_user_groups.rb +12 -0
  83. data/db/migrate/20190215214413_create_group_policy_joins.rb +12 -0
  84. data/db/migrate/20190215214415_create_roles.rb +11 -0
  85. data/db/migrate/20190215214416_create_user_roles.rb +12 -0
  86. data/db/migrate/20190215214421_create_role_policy_joins.rb +12 -0
  87. data/db/migrate/20190924091536_add_display_properties_to_tenants.rb +5 -0
  88. data/db/migrate/20191021220135_create_public_keys.rb +10 -0
  89. data/db/migrate/20191120083154_add_confirmable_email_to_user.rb +9 -0
  90. data/db/seeds/development/tenants.seeds.rb +41 -0
  91. data/db/seeds/development/users.seeds.rb +67 -0
  92. data/lib/ros/api_token_strategy.rb +24 -0
  93. data/lib/ros/iam.rb +18 -0
  94. data/lib/ros/iam/console.rb +13 -0
  95. data/lib/ros/iam/engine.rb +51 -0
  96. data/lib/ros/iam/version.rb +7 -0
  97. data/lib/tasks/ros/iam_tasks.rake +51 -0
  98. metadata +209 -0
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcrypt'
4
+ require 'devise'
5
+ # require 'devise/jwt'
6
+
7
+ require 'ros/core'
8
+ require_relative 'api_token_strategy'
9
+ require 'ros/iam/engine'
10
+
11
+ module Ros
12
+ class << self
13
+ def excluded_models; %w[Tenant Root] end
14
+ end
15
+ module Iam
16
+ # Your code goes here...
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ros
4
+ module Console
5
+ module Methods
6
+ # class << self
7
+ # def models
8
+ # %w(user group credential root tenant)
9
+ # end
10
+ # end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ros
4
+ module Iam
5
+ class Engine < ::Rails::Engine
6
+ config.generators.api_only = true
7
+ config.generators do |g|
8
+ g.test_framework :rspec, fixture: true
9
+ g.fixture_replacement :factory_bot, dir: 'spec/factories'
10
+ end
11
+
12
+ initializer 'service.set_platform_config', before: 'ros_core.load_platform_config' do |_app|
13
+ settings_path = root.join('config/settings.yml')
14
+ Settings.prepend_source!(settings_path) if File.exist? settings_path
15
+ name = self.class.module_parent.name.demodulize.underscore
16
+ Settings.prepend_source!(service: { name: name, policy_name: name.capitalize })
17
+ end
18
+
19
+ # Adds this gem's db/migrations path to the enclosing application's migraations_path array
20
+ # if the gem has been included in an application, i.e. it is not running in the dummy app
21
+ # https://github.com/rails/rails/issues/22261
22
+ initializer 'service.configure_migrations' do |app|
23
+ unless Rails.root.to_s.end_with?('spec/dummy')
24
+ config.paths['db/migrate'].expanded.each do |expanded_path|
25
+ app.config.paths['db/migrate'] << expanded_path
26
+ ActiveRecord::Migrator.migrations_paths << expanded_path
27
+ end
28
+ end
29
+ end
30
+
31
+ initializer 'service.set_factory_paths', before: 'ros_core.set_factory_paths' do
32
+ if defined?(FactoryBot) && !Rails.env.production?
33
+ FactoryBot.definition_file_paths.prepend(Pathname.new(__FILE__).join('../../../../spec/factories'))
34
+ end
35
+ end
36
+
37
+ initializer 'service.configure_event_logging' do |_app|
38
+ if Settings.dig(:event_logging, :enabled)
39
+ Settings.event_logging.config.schemas_path = root.join(Settings.event_logging.config.schemas_path)
40
+ end
41
+ end
42
+
43
+ # initializer 'service.initialize_infra_services', after: 'ros_core.initialize_infra_services' do |app|
44
+ # end
45
+
46
+ initializer 'service.configure_console_methods', before: 'ros_core.configure_console_methods' do |_app|
47
+ require_relative 'console' if Rails.env.development? && !Rails.const_defined?('Server') && File.exist?('console.rb')
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ros
4
+ module Iam
5
+ VERSION = '0.0.1.alpha'
6
+ end
7
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :ros do
4
+ namespace :iam do
5
+ namespace :db do
6
+ desc 'Invoke IAM seeds'
7
+ task :seed do
8
+ seedbank_root = Seedbank.seeds_root
9
+ Seedbank.seeds_root = File.expand_path('db/seeds', Ros::Iam::Engine.root)
10
+ Seedbank.load_tasks
11
+ Rake::Task['db:seed'].invoke
12
+ Seedbank.seeds_root = seedbank_root
13
+ end
14
+ end
15
+
16
+ namespace :apidoc do
17
+ desc 'Publish docs to Postman'
18
+ task :publish do
19
+ # Process each credentials file previously generated by db:seed
20
+ dir = "#{Ros.host_tmp_dir}/credentials/postman"
21
+ Dir["#{dir}/*.json"].each do |postman_env_file|
22
+ payload = JSON.parse(File.read(postman_env_file))
23
+ environment = @workspace.environment(payload['name'])
24
+ payload = @workspace.payload(environment, payload)
25
+ @workspace.publish(environment, payload)
26
+ end
27
+ end
28
+ end
29
+
30
+ namespace :credentials do
31
+ desc 'Display IAM credentials for the current deployment'
32
+ task :show do
33
+ puts "Credentials for #{ENV['PLATFORM__API_DOCS__SERVER__HOST']}"
34
+ path = "#{Ros.host_tmp_dir}/credentials"
35
+ puts File.read("#{path}/cli")
36
+ puts "\n\nPostman\n"
37
+ Dir["#{path}/postman/*"].each do |cred|
38
+ puts File.read(cred)
39
+ end
40
+ end
41
+
42
+ task :link do
43
+ path = "#{Ros.host_tmp_dir}/credentials"
44
+ FileUtils.mkdir_p("#{Dir.home}/.#{Settings.partition_name}")
45
+ Dir.chdir("#{Dir.home}/.#{Settings.partition_name}") do
46
+ FileUtils.ln_s("#{path}/cli", 'credentials')
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,209 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cnfs-iam
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Robert Roach
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bcrypt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.12
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.12
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 6.0.2.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 6.0.2.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: devise
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.7.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.7.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: cnfs-core
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.1alpha
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.1alpha
69
+ - !ruby/object:Gem::Dependency
70
+ name: cnfs_sdk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.1alpha
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.1alpha
83
+ description: Facilities to manage Users, Groups and Roles permission to Platform Resources
84
+ email:
85
+ - rjayroach@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - MIT-LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - app/controllers/concerns/is_tenant_scoped.rb
94
+ - app/controllers/credentials_controller.rb
95
+ - app/controllers/groups_controller.rb
96
+ - app/controllers/iam/application_controller.rb
97
+ - app/controllers/iam/confirmations_controller.rb
98
+ - app/controllers/iam/passwords_controller.rb
99
+ - app/controllers/iam/sessions_controller.rb
100
+ - app/controllers/policies_controller.rb
101
+ - app/controllers/public_keys_controller.rb
102
+ - app/controllers/roots/sessions_controller.rb
103
+ - app/controllers/roots_controller.rb
104
+ - app/controllers/users/confirmations_controller.rb
105
+ - app/controllers/users/passwords_controller.rb
106
+ - app/controllers/users/sessions_controller.rb
107
+ - app/controllers/users_controller.rb
108
+ - app/mailers/account_mailer.rb
109
+ - app/models/action.rb
110
+ - app/models/credential.rb
111
+ - app/models/group.rb
112
+ - app/models/group_policy_join.rb
113
+ - app/models/iam/application_record.rb
114
+ - app/models/policy.rb
115
+ - app/models/policy_action.rb
116
+ - app/models/public_key.rb
117
+ - app/models/role.rb
118
+ - app/models/role_policy_join.rb
119
+ - app/models/root.rb
120
+ - app/models/root_credential.rb
121
+ - app/models/tenant.rb
122
+ - app/models/user.rb
123
+ - app/models/user_credential.rb
124
+ - app/models/user_group.rb
125
+ - app/models/user_policy_join.rb
126
+ - app/models/user_role.rb
127
+ - app/operations/blackcomb_user_create.rb
128
+ - app/operations/user_create.rb
129
+ - app/policies/action_policy.rb
130
+ - app/policies/credential_policy.rb
131
+ - app/policies/group_policy.rb
132
+ - app/policies/iam/application_policy.rb
133
+ - app/policies/policy_policy.rb
134
+ - app/policies/public_key_policy.rb
135
+ - app/policies/root_policy.rb
136
+ - app/policies/tenant_policy.rb
137
+ - app/policies/user_policy.rb
138
+ - app/resources/action_resource.rb
139
+ - app/resources/credential_resource.rb
140
+ - app/resources/group_resource.rb
141
+ - app/resources/iam/application_resource.rb
142
+ - app/resources/policy_resource.rb
143
+ - app/resources/public_key_resource.rb
144
+ - app/resources/root_resource.rb
145
+ - app/resources/tenant_resource.rb
146
+ - app/resources/user_resource.rb
147
+ - app/views/layouts/mailer.html.erb
148
+ - app/views/user_mailer/confirmation_instructions.html.erb
149
+ - app/views/user_mailer/email_changed.html.erb
150
+ - app/views/user_mailer/password_change.html.erb
151
+ - app/views/user_mailer/reset_password_instructions.html.erb
152
+ - app/views/user_mailer/team_welcome.html.erb
153
+ - app/views/user_mailer/unlock_instructions.html.erb
154
+ - config/environment.rb
155
+ - config/initializers/devise.rb
156
+ - config/locales/devise.en.yml
157
+ - config/routes.rb
158
+ - config/sidekiq.yml
159
+ - config/spring.rb
160
+ - db/migrate/20190101000001_create_policies.rb
161
+ - db/migrate/20190101000002_create_actions.rb
162
+ - db/migrate/20190101000003_create_policy_actions.rb
163
+ - db/migrate/20190215214352_create_roots.rb
164
+ - db/migrate/20190215214353_update_tenants.rb
165
+ - db/migrate/20190215214355_create_credentials.rb
166
+ - db/migrate/20190215214407_create_users.rb
167
+ - db/migrate/20190215214409_create_user_credentials.rb
168
+ - db/migrate/20190215214410_create_user_policy_joins.rb
169
+ - db/migrate/20190215214411_create_groups.rb
170
+ - db/migrate/20190215214412_create_user_groups.rb
171
+ - db/migrate/20190215214413_create_group_policy_joins.rb
172
+ - db/migrate/20190215214415_create_roles.rb
173
+ - db/migrate/20190215214416_create_user_roles.rb
174
+ - db/migrate/20190215214421_create_role_policy_joins.rb
175
+ - db/migrate/20190924091536_add_display_properties_to_tenants.rb
176
+ - db/migrate/20191021220135_create_public_keys.rb
177
+ - db/migrate/20191120083154_add_confirmable_email_to_user.rb
178
+ - db/seeds/development/tenants.seeds.rb
179
+ - db/seeds/development/users.seeds.rb
180
+ - lib/ros/api_token_strategy.rb
181
+ - lib/ros/iam.rb
182
+ - lib/ros/iam/console.rb
183
+ - lib/ros/iam/engine.rb
184
+ - lib/ros/iam/version.rb
185
+ - lib/tasks/ros/iam_tasks.rake
186
+ homepage: https://github.com/rails-on-services
187
+ licenses:
188
+ - MIT
189
+ metadata: {}
190
+ post_install_message:
191
+ rdoc_options: []
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">"
202
+ - !ruby/object:Gem::Version
203
+ version: 1.3.1
204
+ requirements: []
205
+ rubygems_version: 3.0.3
206
+ signing_key:
207
+ specification_version: 4
208
+ summary: Provides Identity and Access Management for the Ros Platform
209
+ test_files: []