cnfs-cognito 0.0.1.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +24 -0
- data/app/controllers/chown_requests_controller.rb +4 -0
- data/app/controllers/chown_results_controller.rb +4 -0
- data/app/controllers/cognito/application_controller.rb +6 -0
- data/app/controllers/endpoints_controller.rb +4 -0
- data/app/controllers/identifiers_controller.rb +4 -0
- data/app/controllers/login_controller.rb +45 -0
- data/app/controllers/metabase_cards_controller.rb +4 -0
- data/app/controllers/metabase_token_controller.rb +46 -0
- data/app/controllers/pools_controller.rb +21 -0
- data/app/controllers/users_controller.rb +4 -0
- data/app/models/chown_request.rb +13 -0
- data/app/models/chown_result.rb +14 -0
- data/app/models/cognito/application_record.rb +7 -0
- data/app/models/endpoint.rb +6 -0
- data/app/models/identifier.rb +5 -0
- data/app/models/metabase_card.rb +6 -0
- data/app/models/platform_event_consumer.rb +8 -0
- data/app/models/pool.rb +6 -0
- data/app/models/tenant.rb +5 -0
- data/app/models/user.rb +50 -0
- data/app/models/user_pool.rb +6 -0
- data/app/operations/chown_request_process.rb +27 -0
- data/app/operations/pool_create.rb +65 -0
- data/app/operations/segments/age.rb +65 -0
- data/app/operations/segments/birthday.rb +49 -0
- data/app/operations/segments/except_ids.rb +28 -0
- data/app/operations/segments/gender.rb +35 -0
- data/app/operations/segments_apply.rb +40 -0
- data/app/policies/chown_request_policy.rb +4 -0
- data/app/policies/chown_result_policy.rb +4 -0
- data/app/policies/cognito/application_policy.rb +6 -0
- data/app/policies/endpoint_policy.rb +4 -0
- data/app/policies/identifier_policy.rb +4 -0
- data/app/policies/metabase_card_policy.rb +4 -0
- data/app/policies/pool_policy.rb +4 -0
- data/app/policies/tenant_policy.rb +5 -0
- data/app/policies/user_policy.rb +20 -0
- data/app/resources/chown_request_resource.rb +5 -0
- data/app/resources/chown_result_resource.rb +8 -0
- data/app/resources/cognito/application_resource.rb +7 -0
- data/app/resources/endpoint_resource.rb +49 -0
- data/app/resources/identifier_resource.rb +6 -0
- data/app/resources/metabase_card_resource.rb +5 -0
- data/app/resources/pool_resource.rb +30 -0
- data/app/resources/user_resource.rb +27 -0
- data/app/services/metabase/config.rb +16 -0
- data/app/services/metabase/token_generator.rb +36 -0
- data/config/environment.rb +0 -0
- data/config/routes.rb +14 -0
- data/config/sidekiq.yml +3 -0
- data/config/spring.rb +3 -0
- data/db/migrate/20190310013542_create_endpoints.rb +13 -0
- data/db/migrate/20190317072927_create_pools.rb +12 -0
- data/db/migrate/20190317073055_create_users.rb +18 -0
- data/db/migrate/20190317073139_create_identifiers.rb +14 -0
- data/db/migrate/20190317073328_create_user_pools.rb +12 -0
- data/db/migrate/20191105100356_create_chown_requests.rb +9 -0
- data/db/migrate/20191106023315_create_chown_results.rb +12 -0
- data/db/migrate/20191126011832_create_metabase_cards.rb +11 -0
- data/db/migrate/20191129055605_add_birthday_to_user.rb +5 -0
- data/db/migrate/20191205023159_add_gender_to_user.rb +5 -0
- data/db/migrate/20191210050613_add_system_generated_flag_to_pools.rb +5 -0
- data/db/seeds/development/data.seeds.rb +0 -0
- data/db/seeds/development/tenants.seeds.rb +7 -0
- data/db/seeds/development/users.seeds.rb +29 -0
- data/lib/ros/cognito.rb +16 -0
- data/lib/ros/cognito/engine.rb +53 -0
- data/lib/ros/cognito/version.rb +7 -0
- data/lib/tasks/ros/cognito_tasks.rake +16 -0
- metadata +162 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Metabase
|
4
|
+
class Config
|
5
|
+
include ActiveModel::Model
|
6
|
+
include ActiveModel::Attributes
|
7
|
+
|
8
|
+
attribute :sign_algorithm, :string, default: 'HS256'
|
9
|
+
attribute :default_expiry, :integer, default: 86_400
|
10
|
+
attribute :minimum_expiry, :integer, default: 3_600
|
11
|
+
attribute :maximum_expiry, :integer, default: 2_592_000
|
12
|
+
attribute :secret, :string
|
13
|
+
|
14
|
+
validates :secret, presence: { message: 'Metabase secret is misconfigured or missing' }
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'jwt'
|
4
|
+
module Metabase
|
5
|
+
class TokenGenerator
|
6
|
+
include ActiveModel::Model
|
7
|
+
delegate :minimum_expiry, :maximum_expiry, to: :config
|
8
|
+
attr_reader :exp, :payload, :config
|
9
|
+
|
10
|
+
validate :config_validation!
|
11
|
+
validates :payload, presence: true
|
12
|
+
validates :exp, numericality: {
|
13
|
+
less_than_or_equal_to: :maximum_expiry,
|
14
|
+
greater_than_or_equal_to: :minimum_expiry
|
15
|
+
}, allow_blank: true
|
16
|
+
|
17
|
+
def initialize(payload:, expiry:)
|
18
|
+
@config = Metabase::Config.new(secret: Settings.metabase.encryption_key)
|
19
|
+
|
20
|
+
@exp = expiry || config.default_expiry
|
21
|
+
@payload = payload.merge(iat: Time.now.to_i, exp: Time.now.to_i + exp)
|
22
|
+
end
|
23
|
+
|
24
|
+
def token
|
25
|
+
return unless valid?
|
26
|
+
|
27
|
+
@token ||= JWT.encode payload, config.secret, config.sign_algorithm
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def config_validation!
|
33
|
+
errors.add(:config, config.errors.messages) unless config.valid?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
File without changes
|
data/config/routes.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Ros::Cognito::Engine.routes.draw do
|
4
|
+
jsonapi_resources :metabase_cards
|
5
|
+
jsonapi_resources :chown_results
|
6
|
+
jsonapi_resources :chown_requests, only: [:create]
|
7
|
+
jsonapi_resources :identifiers
|
8
|
+
jsonapi_resources :users
|
9
|
+
jsonapi_resources :pools
|
10
|
+
jsonapi_resources :endpoints
|
11
|
+
|
12
|
+
resources :metabase_token, only: [:show]
|
13
|
+
post 'login', to: 'login#create'
|
14
|
+
end
|
data/config/sidekiq.yml
ADDED
data/config/spring.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateEndpoints < ActiveRecord::Migration[6.0]
|
4
|
+
def change
|
5
|
+
create_table :endpoints do |t|
|
6
|
+
t.string :url, null: false, index: { unique: true }
|
7
|
+
t.references :target, polymorphic: true
|
8
|
+
t.jsonb :properties
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateUsers < ActiveRecord::Migration[6.0]
|
4
|
+
def change
|
5
|
+
create_table :users do |t|
|
6
|
+
t.string :primary_identifier, index: { unique: true }
|
7
|
+
t.string :title
|
8
|
+
t.string :first_name
|
9
|
+
t.string :last_name
|
10
|
+
t.string :phone_number
|
11
|
+
t.string :email_address
|
12
|
+
t.boolean :anonymous, default: false
|
13
|
+
t.jsonb :properties
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateIdentifiers < ActiveRecord::Migration[6.0]
|
4
|
+
def change
|
5
|
+
create_table :identifiers do |t|
|
6
|
+
t.string :name
|
7
|
+
t.string :value
|
8
|
+
t.references :user, foreign_key: true
|
9
|
+
t.jsonb :properties
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
after 'development:tenants' do
|
4
|
+
Tenant.all.each do |tenant|
|
5
|
+
next if tenant.id.eql? 1
|
6
|
+
|
7
|
+
tenant.switch do
|
8
|
+
# Endpoint.create(url: "http://tenant#{tenant.id}.com/hello", target_type: 'Survey::Group', target_id: 1)
|
9
|
+
# Endpoint.create(url: 'http://i.pxln.io/59dcb', target_type: 'Survey::Campaign', target_id: 1)
|
10
|
+
# User.reset
|
11
|
+
# file_name = 'cognito_pools.csv'
|
12
|
+
# User.load_csv(file_name)
|
13
|
+
Pool.create(name: 'Developers').tap do |pool|
|
14
|
+
pool.users.create(primary_identifier: 'developer', title: 'Mr', last_name: 'Developer',
|
15
|
+
phone_number: '+15855551212')
|
16
|
+
end
|
17
|
+
Pool.create(name: 'Gold Tier').tap do |pool|
|
18
|
+
pool.users.create(primary_identifier: 'jones', title: 'Mr', last_name: 'Jones', phone_number: '+1388200363')
|
19
|
+
pool.users.create(primary_identifier: 'miller', title: 'Mrs', last_name: 'Miller', phone_number: '+1396537757')
|
20
|
+
pool.users.create(primary_identifier: 'doe', title: 'Miss', last_name: 'Doe', phone_number: '+1382800710')
|
21
|
+
end
|
22
|
+
Pool.create(name: 'Silver Tier').tap do |pool|
|
23
|
+
pool.users.create(primary_identifier: SecureRandom.uuid, title: 'Ms', last_name: 'Shelly', phone_number: '')
|
24
|
+
pool.users.create(primary_identifier: SecureRandom.uuid, title: 'Mr', last_name: 'Homes', phone_number: '')
|
25
|
+
pool.users.create(primary_identifier: SecureRandom.uuid, title: 'Mr', last_name: 'Lucas', phone_number: '')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/ros/cognito.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ros
|
4
|
+
module Cognito
|
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 app.config.paths['db/migrate'].first.include? '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', after: '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
|
+
# if Rails.env.development? && !Rails.const_defined?('Server')
|
48
|
+
# require_relative 'console'
|
49
|
+
# end
|
50
|
+
# end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :ros do
|
4
|
+
namespace :cognito do
|
5
|
+
namespace :db do
|
6
|
+
desc 'Load engine seeds'
|
7
|
+
task :seed do
|
8
|
+
seedbank_root = Seedbank.seeds_root
|
9
|
+
Seedbank.seeds_root = File.expand_path('db/seeds', Ros::Cognito::Engine.root)
|
10
|
+
Seedbank.load_tasks
|
11
|
+
Rake::Task['db:seed'].invoke
|
12
|
+
Seedbank.seeds_root = seedbank_root
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cnfs-cognito
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.alpha1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Roach
|
8
|
+
- Rui Baltazar
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-01-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 6.0.2.1
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 6.0.2.1
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: cnfs-core
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.0.1alpha
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.0.1alpha
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: cnfs_sdk
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.0.1alpha
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.0.1alpha
|
56
|
+
description: ": Description of Ros::Cognito."
|
57
|
+
email:
|
58
|
+
- rjayroach@gmail.com
|
59
|
+
- rui.p.baltazar@gmail.com
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- MIT-LICENSE
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- app/controllers/chown_requests_controller.rb
|
68
|
+
- app/controllers/chown_results_controller.rb
|
69
|
+
- app/controllers/cognito/application_controller.rb
|
70
|
+
- app/controllers/endpoints_controller.rb
|
71
|
+
- app/controllers/identifiers_controller.rb
|
72
|
+
- app/controllers/login_controller.rb
|
73
|
+
- app/controllers/metabase_cards_controller.rb
|
74
|
+
- app/controllers/metabase_token_controller.rb
|
75
|
+
- app/controllers/pools_controller.rb
|
76
|
+
- app/controllers/users_controller.rb
|
77
|
+
- app/models/chown_request.rb
|
78
|
+
- app/models/chown_result.rb
|
79
|
+
- app/models/cognito/application_record.rb
|
80
|
+
- app/models/endpoint.rb
|
81
|
+
- app/models/identifier.rb
|
82
|
+
- app/models/metabase_card.rb
|
83
|
+
- app/models/platform_event_consumer.rb
|
84
|
+
- app/models/pool.rb
|
85
|
+
- app/models/tenant.rb
|
86
|
+
- app/models/user.rb
|
87
|
+
- app/models/user_pool.rb
|
88
|
+
- app/operations/chown_request_process.rb
|
89
|
+
- app/operations/pool_create.rb
|
90
|
+
- app/operations/segments/age.rb
|
91
|
+
- app/operations/segments/birthday.rb
|
92
|
+
- app/operations/segments/except_ids.rb
|
93
|
+
- app/operations/segments/gender.rb
|
94
|
+
- app/operations/segments_apply.rb
|
95
|
+
- app/policies/chown_request_policy.rb
|
96
|
+
- app/policies/chown_result_policy.rb
|
97
|
+
- app/policies/cognito/application_policy.rb
|
98
|
+
- app/policies/endpoint_policy.rb
|
99
|
+
- app/policies/identifier_policy.rb
|
100
|
+
- app/policies/metabase_card_policy.rb
|
101
|
+
- app/policies/pool_policy.rb
|
102
|
+
- app/policies/tenant_policy.rb
|
103
|
+
- app/policies/user_policy.rb
|
104
|
+
- app/resources/chown_request_resource.rb
|
105
|
+
- app/resources/chown_result_resource.rb
|
106
|
+
- app/resources/cognito/application_resource.rb
|
107
|
+
- app/resources/endpoint_resource.rb
|
108
|
+
- app/resources/identifier_resource.rb
|
109
|
+
- app/resources/metabase_card_resource.rb
|
110
|
+
- app/resources/pool_resource.rb
|
111
|
+
- app/resources/user_resource.rb
|
112
|
+
- app/services/metabase/config.rb
|
113
|
+
- app/services/metabase/token_generator.rb
|
114
|
+
- config/environment.rb
|
115
|
+
- config/routes.rb
|
116
|
+
- config/sidekiq.yml
|
117
|
+
- config/spring.rb
|
118
|
+
- db/migrate/20190310013542_create_endpoints.rb
|
119
|
+
- db/migrate/20190317072927_create_pools.rb
|
120
|
+
- db/migrate/20190317073055_create_users.rb
|
121
|
+
- db/migrate/20190317073139_create_identifiers.rb
|
122
|
+
- db/migrate/20190317073328_create_user_pools.rb
|
123
|
+
- db/migrate/20191105100356_create_chown_requests.rb
|
124
|
+
- db/migrate/20191106023315_create_chown_results.rb
|
125
|
+
- db/migrate/20191126011832_create_metabase_cards.rb
|
126
|
+
- db/migrate/20191129055605_add_birthday_to_user.rb
|
127
|
+
- db/migrate/20191205023159_add_gender_to_user.rb
|
128
|
+
- db/migrate/20191210050613_add_system_generated_flag_to_pools.rb
|
129
|
+
- db/seeds/development/data.seeds.rb
|
130
|
+
- db/seeds/development/tenants.seeds.rb
|
131
|
+
- db/seeds/development/users.seeds.rb
|
132
|
+
- lib/ros/cognito.rb
|
133
|
+
- lib/ros/cognito/engine.rb
|
134
|
+
- lib/ros/cognito/version.rb
|
135
|
+
- lib/tasks/ros/cognito_tasks.rake
|
136
|
+
homepage: http://guides.rails-on-services.org/
|
137
|
+
licenses:
|
138
|
+
- MIT
|
139
|
+
metadata: {}
|
140
|
+
post_install_message:
|
141
|
+
rdoc_options: []
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: 2.6.0
|
149
|
+
- - "<"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '2.7'
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 1.3.1
|
157
|
+
requirements: []
|
158
|
+
rubygems_version: 3.0.3
|
159
|
+
signing_key:
|
160
|
+
specification_version: 4
|
161
|
+
summary: ": Summary of Ros::Cognito."
|
162
|
+
test_files: []
|