web47core 2.3.4 → 3.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 +4 -4
- data/README.md +1 -3
- data/app/controllers/status_controller.rb +7 -1
- data/app/views/system_configurations/_show.html.haml +1 -2
- data/lib/app/controllers/concerns/core_system_configuration_controller.rb +5 -16
- data/lib/app/jobs/application_job.rb +0 -1
- data/lib/app/jobs/cron/tab.rb +1 -1
- data/lib/app/models/concerns/api_tokenable.rb +1 -1
- data/lib/app/models/concerns/aws_configuration.rb +1 -29
- data/lib/app/models/concerns/cdn_url.rb +7 -2
- data/lib/app/models/concerns/core_smtp_configuration.rb +1 -1
- data/lib/app/models/concerns/core_system_configuration.rb +3 -18
- data/lib/app/models/concerns/delayed_job_configuration.rb +1 -1
- data/lib/app/models/concerns/email_able.rb +1 -1
- data/lib/app/models/concerns/server_process_able.rb +1 -1
- data/lib/app/models/concerns/standard_model.rb +3 -7
- data/lib/app/models/delayed/jobs/worker.rb +1 -1
- data/lib/app/models/email_notification.rb +48 -40
- data/lib/app/models/notification_template.rb +1 -1
- data/lib/app/models/smtp_configuration.rb +3 -3
- data/lib/web47core/version.rb +1 -1
- data/lib/web47core.rb +0 -2
- metadata +59 -197
- data/lib/app/models/concerns/google_sso_configuration.rb +0 -32
- data/lib/app/models/concerns/ses_configuration.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 566b3144e56826da109dad9c9aae596d8ae7f875d92d253f846dda027a44911b
|
4
|
+
data.tar.gz: 1e3688dcb0aea6d837b27a9417f085f6c0243577c2cc012cb65946ae22a3564f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d355f655ffa529310e5b482b9cf24aec78dee43058214b48804f71db4aab8998bca051f5a6bff384dc5e3d4aa3f593b0ef65d6ff345598cb9dc2b03cdf556240
|
7
|
+
data.tar.gz: 2b57edd50900933a14f46bc39c8e382d5562cc422e542a5380b357544789972a2af1d3bbc636a5c118b17210086cc20fc1276613930d3b09dfacbe9a5adea7c9
|
data/README.md
CHANGED
@@ -188,9 +188,7 @@ The following routes should be added to the correct namespace for your applicait
|
|
188
188
|
#
|
189
189
|
# System configuration
|
190
190
|
#
|
191
|
-
resource :system_configurations, only: %i[edit update show]
|
192
|
-
get :sync
|
193
|
-
end
|
191
|
+
resource :system_configurations, only: %i[edit update show]
|
194
192
|
#
|
195
193
|
# Delayed jobs
|
196
194
|
#
|
@@ -96,7 +96,13 @@ class StatusController < ActionController::Base
|
|
96
96
|
#
|
97
97
|
def delayed_jobs_status
|
98
98
|
count = Delayed::Backend::Mongoid::Job.count
|
99
|
-
|
99
|
+
oldest = Delayed::Backend::Mongoid::Job.asc(:_id).limit(1).first
|
100
|
+
job_age = if oldest.present?
|
101
|
+
Time.now.utc.to_i - oldest.created_at.to_i
|
102
|
+
else
|
103
|
+
0
|
104
|
+
end
|
105
|
+
report_success "#{count} Jobs", count: count, job_age: job_age
|
100
106
|
rescue StandardError => error
|
101
107
|
report_error(error)
|
102
108
|
end
|
@@ -7,7 +7,6 @@
|
|
7
7
|
.card-title=SystemConfiguration.environment.titleize
|
8
8
|
.card-tray
|
9
9
|
= edit_link_tag(SystemConfiguration, class_action_path(:edit))
|
10
|
-
= replay_link_tag(SystemConfiguration, class_action_path(:sync))
|
11
10
|
.card
|
12
11
|
.card-content.section-data-tables
|
13
12
|
%table.highlight.striped.data-table
|
@@ -16,7 +15,7 @@
|
|
16
15
|
=table_header_tag :field
|
17
16
|
=table_header_tag :value
|
18
17
|
%tbody
|
19
|
-
- SystemConfiguration.allowed_param_names.
|
18
|
+
- SystemConfiguration.allowed_param_names.each do |field|
|
20
19
|
%tr
|
21
20
|
%td=field
|
22
21
|
%td=mask_system_configuration(field)
|
@@ -10,26 +10,15 @@ module CoreSystemConfigurationsController
|
|
10
10
|
# Edit the system configuration
|
11
11
|
#
|
12
12
|
def edit
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
# @abstract Cause the system configuration to be synced with the switchboard server
|
17
|
-
def sync
|
18
|
-
raise 'System Configuration not configured to sync' unless SystemConfiguration.switchboard_configured?
|
19
|
-
|
20
|
-
Cron::SwitchboardSyncConfiguration.perform_later
|
21
|
-
flash[:info] = 'System Configuration Refreshing in the Background'
|
22
|
-
redirect_to index_path
|
23
|
-
rescue StandardError => error
|
24
|
-
log_controller_error error, true
|
25
|
-
redirect_to index_path
|
13
|
+
load_configuration
|
26
14
|
end
|
27
15
|
|
28
16
|
#
|
29
17
|
# Update and log the system configuration changes
|
30
18
|
#
|
31
19
|
def update
|
32
|
-
system_configuration.
|
20
|
+
# @system_configuration.update_attributes_and_log! @current_admin_user, system_configuration_params
|
21
|
+
SystemConfiguration.configuration.update! system_configuration_params
|
33
22
|
if SystemConfiguration.switchboard_configured?
|
34
23
|
flash[:info] = 'System Configuration Updated, sync job running in the background'
|
35
24
|
Cron::SwitchboardSyncConfiguration.perform_later
|
@@ -39,7 +28,7 @@ module CoreSystemConfigurationsController
|
|
39
28
|
redirect_to index_path
|
40
29
|
rescue StandardError => error
|
41
30
|
log_controller_error error
|
42
|
-
|
31
|
+
load_configuration
|
43
32
|
render :edit
|
44
33
|
end
|
45
34
|
|
@@ -55,7 +44,7 @@ module CoreSystemConfigurationsController
|
|
55
44
|
#
|
56
45
|
# Load the current system configuration
|
57
46
|
#
|
58
|
-
def
|
47
|
+
def load_configuration
|
59
48
|
@system_configuration = SystemConfiguration.configuration
|
60
49
|
end
|
61
50
|
end
|
data/lib/app/jobs/cron/tab.rb
CHANGED
@@ -18,7 +18,7 @@ module Cron
|
|
18
18
|
# Fields
|
19
19
|
#
|
20
20
|
field :name, type: String
|
21
|
-
field :enabled, type: Boolean, default: true
|
21
|
+
field :enabled, type: Mongoid::Boolean, default: true
|
22
22
|
field :min, type: String, default: 0
|
23
23
|
field :hour, type: String, default: 0
|
24
24
|
field :wday, type: String, default: WILDCARD
|
@@ -11,7 +11,7 @@ module ApiTokenable
|
|
11
11
|
# store api token
|
12
12
|
field :api_token, type: String
|
13
13
|
# if the api token should be reset
|
14
|
-
field :reset_api_token, type: Boolean, default: true
|
14
|
+
field :reset_api_token, type: Mongoid::Boolean, default: true
|
15
15
|
field :last_authenticated_at, type: Time
|
16
16
|
field :last_authenticated_ip, type: String
|
17
17
|
# call back to reset the api token.
|
@@ -15,7 +15,6 @@ module AwsConfiguration
|
|
15
15
|
field :aws_access_key_id, type: String
|
16
16
|
field :aws_secret_access_key, type: String
|
17
17
|
field :aws_auto_scaling_group_name, type: String
|
18
|
-
field :aws_bucket_name, type: String
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
@@ -23,7 +22,7 @@ module AwsConfiguration
|
|
23
22
|
# Make sure the password doesn't get blanked out on an update
|
24
23
|
#
|
25
24
|
def secure_fields
|
26
|
-
super + %i[
|
25
|
+
super + %i[aws_access_secret]
|
27
26
|
end
|
28
27
|
|
29
28
|
#
|
@@ -39,31 +38,4 @@ module AwsConfiguration
|
|
39
38
|
def aws_auto_scaling_configured?
|
40
39
|
aws_configured? && aws_auto_scaling_group_name.present?
|
41
40
|
end
|
42
|
-
|
43
|
-
def aws_credentials
|
44
|
-
@aws_credentials ||= Aws::Credentials.new(aws_access_key_id,
|
45
|
-
aws_secret_access_key)
|
46
|
-
end
|
47
|
-
|
48
|
-
#
|
49
|
-
# AWS client.
|
50
|
-
#
|
51
|
-
def aws_ec2_client
|
52
|
-
return nil unless aws_configured?
|
53
|
-
|
54
|
-
@aws_ec2_client ||= Aws::EC2::Client.new(region: aws_region, credentials: aws_credentials);
|
55
|
-
end
|
56
|
-
|
57
|
-
#
|
58
|
-
# S3 Client
|
59
|
-
#
|
60
|
-
def aws_s3_client
|
61
|
-
return nil unless aws_configured?
|
62
|
-
|
63
|
-
# We want this to remake itself each time because it is possible that the
|
64
|
-
# => user would change the access keys in between actions. Huh?
|
65
|
-
@aws_s3_client ||= Aws::S3::Client.new(region: aws_region,
|
66
|
-
access_key_id: aws_access_key_id,
|
67
|
-
secret_access_key: aws_secret_access_key)
|
68
|
-
end
|
69
41
|
end
|
@@ -17,9 +17,14 @@
|
|
17
17
|
#
|
18
18
|
module CdnUrl
|
19
19
|
extend ActiveSupport::Concern
|
20
|
+
#
|
21
|
+
# Constants
|
22
|
+
#
|
23
|
+
STYLE_S3_FILE_PATH = ':class/:attachment/:id/:style.:extension' unless defined? STYLE_S3_FILE_PATH
|
24
|
+
STYLE_FILE_PATH = 'public/system/:class/:attachment/:id/:style.:extension' unless defined? STYLE_FILE_PATH
|
25
|
+
STYLE_S3_FILE_URL = ':s3_domain_url' unless defined? STYLE_S3_FILE_URL
|
26
|
+
STYLE_FILE_URL = ':rails_root/public/system/:class/:attachment/:id/:style.:extension' unless defined? STYLE_FILE_URL
|
20
27
|
|
21
|
-
# @abstract Catch methods started with `cdn_` and respond to those requests if there is a
|
22
|
-
# matching method ending in `_url`
|
23
28
|
def method_missing(method, *args)
|
24
29
|
if method.to_s.start_with? 'cdn_'
|
25
30
|
url = if args.blank?
|
@@ -19,7 +19,7 @@ module CoreSmtpConfiguration
|
|
19
19
|
field :smtp_port, type: Integer, default: 587
|
20
20
|
field :smtp_user_name, type: String
|
21
21
|
field :smtp_password, type: String
|
22
|
-
field :smtp_enable_starttls_auto, type: Boolean, default: false
|
22
|
+
field :smtp_enable_starttls_auto, type: Mongoid::Boolean, default: false
|
23
23
|
field :mailgun_api_key, type: String
|
24
24
|
field :email_notification_ttl, type: Integer, default: 180
|
25
25
|
end
|
@@ -14,11 +14,6 @@
|
|
14
14
|
#
|
15
15
|
module CoreSystemConfiguration
|
16
16
|
extend ActiveSupport::Concern
|
17
|
-
EMAIL_PROVIDER_SMTP_TYPE = 'smtp'.freeze unless defined? EMAIL_PROVIDER_SMTP_TYPE
|
18
|
-
EMAIL_PROVIDER_SES_TYPE = 'ses'.freeze unless defined? EMAIL_PROVIDER_SES_TYPE
|
19
|
-
unless defined? ALL_EMAIL_PROVIDER_TYPES
|
20
|
-
ALL_EMAIL_PROVIDER_TYPES = [EMAIL_PROVIDER_SMTP_TYPE, EMAIL_PROVIDER_SES_TYPE].freeze
|
21
|
-
end
|
22
17
|
|
23
18
|
def self.included(base)
|
24
19
|
base.class_eval do
|
@@ -28,14 +23,13 @@ module CoreSystemConfiguration
|
|
28
23
|
# Fields
|
29
24
|
#
|
30
25
|
field :environment, type: String, default: 'test'
|
31
|
-
field :fips_mode, type: Boolean, default: false
|
26
|
+
field :fips_mode, type: Mongoid::Boolean, default: false
|
32
27
|
field :fav_icon_path, { type: String, default: '/favicon.ico' }
|
33
28
|
field :stack_logo_path, { type: String, default: 'ui-company-logo.png' }
|
34
29
|
field :primary_stylesheet, { type: String, default: 'app47' }
|
35
30
|
field :short_cache, { type: Integer, default: 1 }
|
36
31
|
field :medium_cache, { type: Integer, default: 5 }
|
37
32
|
field :long_cache, { type: Integer, default: 15 }
|
38
|
-
field :stack_email_provider, type: String, default: EMAIL_PROVIDER_SMTP_TYPE
|
39
33
|
# URLs
|
40
34
|
field :base_url, type: String
|
41
35
|
field :cdn_url, type: String
|
@@ -49,7 +43,6 @@ module CoreSystemConfiguration
|
|
49
43
|
#
|
50
44
|
validates :environment, presence: true, uniqueness: true
|
51
45
|
validates :default_time_zone, presence: true
|
52
|
-
validates :stack_email_provider, inclusion: { in: ALL_EMAIL_PROVIDER_TYPES }
|
53
46
|
end
|
54
47
|
base.extend ClassMethods
|
55
48
|
end
|
@@ -65,9 +58,9 @@ module CoreSystemConfiguration
|
|
65
58
|
#
|
66
59
|
# NOTE: Currently ignored Codacy issue: When using 'method_missing', fall back on 'super'
|
67
60
|
#
|
68
|
-
def method_missing(method,
|
61
|
+
def method_missing(method, ...)
|
69
62
|
if configuration.respond_to?(method)
|
70
|
-
configuration.send(method,
|
63
|
+
configuration.send(method, ...)
|
71
64
|
else
|
72
65
|
super
|
73
66
|
end
|
@@ -82,14 +75,6 @@ module CoreSystemConfiguration
|
|
82
75
|
end
|
83
76
|
end
|
84
77
|
|
85
|
-
def stack_ses_provider?
|
86
|
-
EMAIL_PROVIDER_SES_TYPE.eql?(stack_email_provider)
|
87
|
-
end
|
88
|
-
|
89
|
-
def stack_smtp_provider?
|
90
|
-
EMAIL_PROVIDER_SMTP_TYPE.eql?(stack_email_provider)
|
91
|
-
end
|
92
|
-
|
93
78
|
#
|
94
79
|
# Cache times in minutes
|
95
80
|
#
|
@@ -13,7 +13,7 @@ module DelayedJobConfiguration
|
|
13
13
|
#
|
14
14
|
field :delayed_job_max_allowed_method, type: String, default: 'max'
|
15
15
|
field :delayed_job_max_allowed_factor, type: Integer, default: 5
|
16
|
-
field :delayed_job_restart_orphaned, type: Boolean, default: false
|
16
|
+
field :delayed_job_restart_orphaned, type: Mongoid::Boolean, default: false
|
17
17
|
#
|
18
18
|
# Validations
|
19
19
|
#
|
@@ -17,7 +17,7 @@ module EmailAble
|
|
17
17
|
field :email_bounced_at, type: Time
|
18
18
|
field :email_bounce_reason, type: String
|
19
19
|
field :unconfirmed_email, type: String
|
20
|
-
field :email_enabled, type: Boolean, default: true
|
20
|
+
field :email_enabled, type: Mongoid::Boolean, default: true
|
21
21
|
#
|
22
22
|
# Validations
|
23
23
|
#
|
@@ -13,7 +13,7 @@ module ServerProcessAble
|
|
13
13
|
#
|
14
14
|
field :host_name, type: String
|
15
15
|
field :pid, type: Integer
|
16
|
-
field :running, type: Boolean, default: false
|
16
|
+
field :running, type: Mongoid::Boolean, default: false
|
17
17
|
field :last_check_in_at, type: Time
|
18
18
|
#
|
19
19
|
# Validations
|
@@ -69,7 +69,7 @@ module StandardModel
|
|
69
69
|
names = field_names(filter_names)
|
70
70
|
names += associations if include_relationships
|
71
71
|
names.delete_if { |name| filter_names.include?(name) }
|
72
|
-
rescue StandardError
|
72
|
+
rescue StandardError => error
|
73
73
|
attribute_names.delete_if { |name| filter_names.include?(name) }
|
74
74
|
end
|
75
75
|
|
@@ -87,12 +87,8 @@ module StandardModel
|
|
87
87
|
#
|
88
88
|
def many_to_many_associations
|
89
89
|
associations = []
|
90
|
-
reflect_on_all_associations.each do |association|
|
91
|
-
|
92
|
-
next unless association.relation == Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy
|
93
|
-
else
|
94
|
-
next unless association.macro == :has_and_belongs_to_many
|
95
|
-
end
|
90
|
+
reflect_on_all_associations(:has_and_belongs_to_many).each do |association|
|
91
|
+
next unless association.relation == Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy
|
96
92
|
|
97
93
|
associations << { association.key => [] }
|
98
94
|
end
|
@@ -36,62 +36,60 @@ class EmailNotification < Notification
|
|
36
36
|
field :cc, type: String
|
37
37
|
# The subject
|
38
38
|
field :subject, type: String
|
39
|
-
field :message_id, type: String
|
40
39
|
#
|
41
40
|
# Validations
|
42
41
|
#
|
43
42
|
validates :subject, presence: true
|
44
43
|
validates :to, presence: true
|
45
|
-
|
46
|
-
|
44
|
+
|
45
|
+
# has_many :attachments, class_name: 'EmailNotificationAttachment', dependent: :destroy
|
47
46
|
|
48
47
|
def from_template(template_name, locals = {})
|
49
48
|
super
|
50
49
|
self.subject = subject_from_template(template_name, locals)
|
51
50
|
end
|
52
51
|
|
52
|
+
#
|
53
|
+
# Add a file as an attachment to this email notification.
|
54
|
+
#
|
55
|
+
# Expecting a path to the file, not the file or data itself.
|
56
|
+
# TODO consider how to handle a file object or data object.
|
57
|
+
#
|
58
|
+
# Once you have called this method, the file is stored via PaperClip and
|
59
|
+
# does not need to stay persistant through email delivery.
|
60
|
+
# You can delete it after telling the EmailNotification to send
|
61
|
+
# the notification.
|
62
|
+
#
|
63
|
+
# def add_file(file)
|
64
|
+
# # Make sure we are saved
|
65
|
+
# save! unless persisted?
|
66
|
+
# attachment = EmailNotificationAttachment.new email_notification: self
|
67
|
+
# attachment.file = open(file)
|
68
|
+
# attachment.save!
|
69
|
+
# end
|
53
70
|
def deliver_message!
|
54
|
-
if account.present? && account.fetch_smtp_configuration.use?
|
55
|
-
deliver_smtp_message!
|
56
|
-
elsif SystemConfiguration.stack_smtp_provider?
|
57
|
-
deliver_smtp_message!
|
58
|
-
elsif SystemConfiguration.ses_configured?
|
59
|
-
deliver_ses_message!
|
60
|
-
else
|
61
|
-
fail "Invalid configuration in stack for sending emails"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def deliver_ses_message!
|
66
|
-
config = SystemConfiguration.configuration
|
67
|
-
client = config.aws_ses_client
|
68
|
-
payload = { destination: { to_addresses: [to] },
|
69
|
-
message: {
|
70
|
-
body: { html: { data: build_message } },
|
71
|
-
subject: { data: subject } },
|
72
|
-
source: from }
|
73
|
-
payload[:reply_to_addresses] = [reply_to] if reply_to.present?
|
74
|
-
resp = client.send_email(payload)
|
75
|
-
self.message_id = resp[:message_id]
|
76
|
-
end
|
77
|
-
|
78
|
-
def deliver_smtp_message!
|
79
71
|
mail = Mail.new
|
80
72
|
# Set the from line
|
81
|
-
|
73
|
+
address = from_address
|
74
|
+
mail.from = address
|
75
|
+
self.from = address
|
82
76
|
# Set the sender line
|
83
|
-
|
77
|
+
address = sender_address
|
78
|
+
mail.sender = address
|
79
|
+
self.sender = address
|
84
80
|
# Set the reply to
|
85
|
-
|
86
|
-
|
87
|
-
|
81
|
+
address = reply_to_address
|
82
|
+
if address.present?
|
83
|
+
self.reply_to = address
|
84
|
+
mail.reply_to = address
|
85
|
+
mail.sender = address
|
88
86
|
end
|
89
87
|
|
90
88
|
# Set the to address
|
91
89
|
mail.to = to
|
92
90
|
|
93
91
|
# Set the cc line
|
94
|
-
mail.cc = cc
|
92
|
+
mail.cc = cc unless cc.nil?
|
95
93
|
|
96
94
|
# Set the subject line
|
97
95
|
mail.subject = subject
|
@@ -103,6 +101,9 @@ class EmailNotification < Notification
|
|
103
101
|
body html_message
|
104
102
|
end
|
105
103
|
|
104
|
+
# Add the attachments, if there are any. If not, none are added.
|
105
|
+
add_attachments(attachments) if defined?(attachments)
|
106
|
+
|
106
107
|
# Setup the delivery method for this message only.
|
107
108
|
if 'test'.eql?(ENV['RAILS_ENV'])
|
108
109
|
mail.delivery_method :test
|
@@ -120,12 +121,19 @@ class EmailNotification < Notification
|
|
120
121
|
FileUtils.remove_entry_secure(tmp_dir) if defined?(tmp_dir) && tmp_dir.present?
|
121
122
|
end
|
122
123
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
124
|
+
def add_attachments(attachments = nil)
|
125
|
+
tmp_dir = Dir.mktmpdir
|
126
|
+
attachments.each do |attachment|
|
127
|
+
# Create a temp directory, it'll get cleaned up in the rescue.
|
128
|
+
tmp_file_path = "#{tmp_dir}/#{attachment.file_file_name}"
|
129
|
+
File.open(tmp_file_path, 'w') do |f|
|
130
|
+
f.write(URI.parse(attachment.file_url).open.read.force_encoding('utf-16').encode)
|
131
|
+
end
|
132
|
+
mail.attachments[attachment.file_file_name] = {
|
133
|
+
mime_type: attachment.file_content_type,
|
134
|
+
content: File.open(tmp_file_path).read.force_encoding('utf-16').encode
|
135
|
+
}
|
136
|
+
end
|
129
137
|
end
|
130
138
|
|
131
139
|
#
|
@@ -10,10 +10,10 @@ class SmtpConfiguration
|
|
10
10
|
field :port, type: Integer, default: 587
|
11
11
|
field :authentication_method, type: String
|
12
12
|
field :confirmation_token, type: String
|
13
|
-
field :confirmed, type: Boolean, default: false
|
13
|
+
field :confirmed, type: Mongoid::Boolean, default: false
|
14
14
|
field :verification_message, type: String
|
15
|
-
field :active, type: Boolean, default: false
|
16
|
-
field :ssl, type: Boolean, default: false
|
15
|
+
field :active, type: Mongoid::Boolean, default: false
|
16
|
+
field :ssl, type: Mongoid::Boolean, default: false
|
17
17
|
field :server_name, type: String
|
18
18
|
field :username, type: String
|
19
19
|
field :password, type: String
|
data/lib/web47core/version.rb
CHANGED
data/lib/web47core.rb
CHANGED
@@ -9,8 +9,6 @@ require 'app/models/concerns/cdn_url'
|
|
9
9
|
require 'app/models/concerns/delayed_job_configuration'
|
10
10
|
require 'app/models/concerns/email_able'
|
11
11
|
require 'app/models/concerns/encrypted_password'
|
12
|
-
require 'app/models/concerns/google_sso_configuration'
|
13
|
-
require 'app/models/concerns/ses_configuration'
|
14
12
|
require 'app/models/concerns/search_able'
|
15
13
|
require 'app/models/concerns/role_able'
|
16
14
|
require 'app/models/concerns/time_zone_able'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web47core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Schroeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -44,120 +44,70 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
- - "<"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '2'
|
51
|
-
type: :runtime
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '1.52'
|
58
|
-
- - "<"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '2'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: aws-sdk-ses
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.55'
|
68
|
-
- - "<"
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '2'
|
47
|
+
version: '0'
|
71
48
|
type: :runtime
|
72
49
|
prerelease: false
|
73
50
|
version_requirements: !ruby/object:Gem::Requirement
|
74
51
|
requirements:
|
75
52
|
- - ">="
|
76
53
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
78
|
-
- - "<"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: '2'
|
54
|
+
version: '0'
|
81
55
|
- !ruby/object:Gem::Dependency
|
82
56
|
name: cancancan
|
83
57
|
requirement: !ruby/object:Gem::Requirement
|
84
58
|
requirements:
|
85
59
|
- - ">="
|
86
60
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
88
|
-
- - "<"
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '4'
|
61
|
+
version: '0'
|
91
62
|
type: :runtime
|
92
63
|
prerelease: false
|
93
64
|
version_requirements: !ruby/object:Gem::Requirement
|
94
65
|
requirements:
|
95
66
|
- - ">="
|
96
67
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
98
|
-
- - "<"
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: '4'
|
68
|
+
version: '0'
|
101
69
|
- !ruby/object:Gem::Dependency
|
102
70
|
name: daemons
|
103
71
|
requirement: !ruby/object:Gem::Requirement
|
104
72
|
requirements:
|
105
73
|
- - ">="
|
106
74
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
108
|
-
- - "<"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '2'
|
75
|
+
version: '0'
|
111
76
|
type: :runtime
|
112
77
|
prerelease: false
|
113
78
|
version_requirements: !ruby/object:Gem::Requirement
|
114
79
|
requirements:
|
115
80
|
- - ">="
|
116
81
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
- - "<"
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '2'
|
82
|
+
version: '0'
|
121
83
|
- !ruby/object:Gem::Dependency
|
122
84
|
name: delayed_job_mongoid
|
123
85
|
requirement: !ruby/object:Gem::Requirement
|
124
86
|
requirements:
|
125
87
|
- - ">="
|
126
88
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
128
|
-
- - "<"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '3'
|
89
|
+
version: '0'
|
131
90
|
type: :runtime
|
132
91
|
prerelease: false
|
133
92
|
version_requirements: !ruby/object:Gem::Requirement
|
134
93
|
requirements:
|
135
94
|
- - ">="
|
136
95
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
138
|
-
- - "<"
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: '3'
|
96
|
+
version: '0'
|
141
97
|
- !ruby/object:Gem::Dependency
|
142
98
|
name: email_format
|
143
99
|
requirement: !ruby/object:Gem::Requirement
|
144
100
|
requirements:
|
145
101
|
- - ">="
|
146
102
|
- !ruby/object:Gem::Version
|
147
|
-
version: '
|
148
|
-
- - "<"
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '2'
|
103
|
+
version: '0'
|
151
104
|
type: :runtime
|
152
105
|
prerelease: false
|
153
106
|
version_requirements: !ruby/object:Gem::Requirement
|
154
107
|
requirements:
|
155
108
|
- - ">="
|
156
109
|
- !ruby/object:Gem::Version
|
157
|
-
version: '
|
158
|
-
- - "<"
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '2'
|
110
|
+
version: '0'
|
161
111
|
- !ruby/object:Gem::Dependency
|
162
112
|
name: haml
|
163
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,94 +128,70 @@ dependencies:
|
|
178
128
|
requirements:
|
179
129
|
- - ">="
|
180
130
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
182
|
-
- - "<"
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
version: '3'
|
131
|
+
version: '0'
|
185
132
|
type: :runtime
|
186
133
|
prerelease: false
|
187
134
|
version_requirements: !ruby/object:Gem::Requirement
|
188
135
|
requirements:
|
189
136
|
- - ">="
|
190
137
|
- !ruby/object:Gem::Version
|
191
|
-
version:
|
192
|
-
- - "<"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '3'
|
138
|
+
version: '0'
|
195
139
|
- !ruby/object:Gem::Dependency
|
196
140
|
name: liquid
|
197
141
|
requirement: !ruby/object:Gem::Requirement
|
198
142
|
requirements:
|
199
143
|
- - ">="
|
200
144
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
202
|
-
- - "<"
|
203
|
-
- !ruby/object:Gem::Version
|
204
|
-
version: '6'
|
145
|
+
version: '0'
|
205
146
|
type: :runtime
|
206
147
|
prerelease: false
|
207
148
|
version_requirements: !ruby/object:Gem::Requirement
|
208
149
|
requirements:
|
209
150
|
- - ">="
|
210
151
|
- !ruby/object:Gem::Version
|
211
|
-
version: '
|
212
|
-
- - "<"
|
213
|
-
- !ruby/object:Gem::Version
|
214
|
-
version: '6'
|
152
|
+
version: '0'
|
215
153
|
- !ruby/object:Gem::Dependency
|
216
154
|
name: materialize-sass
|
217
155
|
requirement: !ruby/object:Gem::Requirement
|
218
156
|
requirements:
|
219
157
|
- - ">="
|
220
158
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
222
|
-
- - "<"
|
223
|
-
- !ruby/object:Gem::Version
|
224
|
-
version: '2'
|
159
|
+
version: '0'
|
225
160
|
type: :runtime
|
226
161
|
prerelease: false
|
227
162
|
version_requirements: !ruby/object:Gem::Requirement
|
228
163
|
requirements:
|
229
164
|
- - ">="
|
230
165
|
- !ruby/object:Gem::Version
|
231
|
-
version:
|
232
|
-
- - "<"
|
233
|
-
- !ruby/object:Gem::Version
|
234
|
-
version: '2'
|
166
|
+
version: '0'
|
235
167
|
- !ruby/object:Gem::Dependency
|
236
168
|
name: mongoid
|
237
169
|
requirement: !ruby/object:Gem::Requirement
|
238
170
|
requirements:
|
239
|
-
- - "
|
171
|
+
- - "~>"
|
240
172
|
- !ruby/object:Gem::Version
|
241
|
-
version:
|
173
|
+
version: 7.5.2
|
242
174
|
type: :runtime
|
243
175
|
prerelease: false
|
244
176
|
version_requirements: !ruby/object:Gem::Requirement
|
245
177
|
requirements:
|
246
|
-
- - "
|
178
|
+
- - "~>"
|
247
179
|
- !ruby/object:Gem::Version
|
248
|
-
version:
|
180
|
+
version: 7.5.2
|
249
181
|
- !ruby/object:Gem::Dependency
|
250
182
|
name: rails
|
251
183
|
requirement: !ruby/object:Gem::Requirement
|
252
184
|
requirements:
|
253
|
-
- - "
|
254
|
-
- !ruby/object:Gem::Version
|
255
|
-
version: '5'
|
256
|
-
- - "<"
|
185
|
+
- - "~>"
|
257
186
|
- !ruby/object:Gem::Version
|
258
|
-
version:
|
187
|
+
version: 6.1.7
|
259
188
|
type: :runtime
|
260
189
|
prerelease: false
|
261
190
|
version_requirements: !ruby/object:Gem::Requirement
|
262
191
|
requirements:
|
263
|
-
- - "
|
264
|
-
- !ruby/object:Gem::Version
|
265
|
-
version: '5'
|
266
|
-
- - "<"
|
192
|
+
- - "~>"
|
267
193
|
- !ruby/object:Gem::Version
|
268
|
-
version:
|
194
|
+
version: 6.1.7
|
269
195
|
- !ruby/object:Gem::Dependency
|
270
196
|
name: railties
|
271
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -286,60 +212,28 @@ dependencies:
|
|
286
212
|
requirements:
|
287
213
|
- - ">="
|
288
214
|
- !ruby/object:Gem::Version
|
289
|
-
version: '
|
290
|
-
- - "<"
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
version: '5'
|
293
|
-
type: :runtime
|
294
|
-
prerelease: false
|
295
|
-
version_requirements: !ruby/object:Gem::Requirement
|
296
|
-
requirements:
|
297
|
-
- - ">="
|
298
|
-
- !ruby/object:Gem::Version
|
299
|
-
version: '4.2'
|
300
|
-
- - "<"
|
301
|
-
- !ruby/object:Gem::Version
|
302
|
-
version: '5'
|
303
|
-
- !ruby/object:Gem::Dependency
|
304
|
-
name: redis-rails
|
305
|
-
requirement: !ruby/object:Gem::Requirement
|
306
|
-
requirements:
|
307
|
-
- - ">="
|
308
|
-
- !ruby/object:Gem::Version
|
309
|
-
version: '5'
|
310
|
-
- - "<"
|
311
|
-
- !ruby/object:Gem::Version
|
312
|
-
version: '6'
|
215
|
+
version: '0'
|
313
216
|
type: :runtime
|
314
217
|
prerelease: false
|
315
218
|
version_requirements: !ruby/object:Gem::Requirement
|
316
219
|
requirements:
|
317
220
|
- - ">="
|
318
221
|
- !ruby/object:Gem::Version
|
319
|
-
version: '
|
320
|
-
- - "<"
|
321
|
-
- !ruby/object:Gem::Version
|
322
|
-
version: '6'
|
222
|
+
version: '0'
|
323
223
|
- !ruby/object:Gem::Dependency
|
324
224
|
name: rest-client
|
325
225
|
requirement: !ruby/object:Gem::Requirement
|
326
226
|
requirements:
|
327
227
|
- - ">="
|
328
228
|
- !ruby/object:Gem::Version
|
329
|
-
version:
|
330
|
-
- - "<"
|
331
|
-
- !ruby/object:Gem::Version
|
332
|
-
version: '3'
|
229
|
+
version: '0'
|
333
230
|
type: :runtime
|
334
231
|
prerelease: false
|
335
232
|
version_requirements: !ruby/object:Gem::Requirement
|
336
233
|
requirements:
|
337
234
|
- - ">="
|
338
235
|
- !ruby/object:Gem::Version
|
339
|
-
version:
|
340
|
-
- - "<"
|
341
|
-
- !ruby/object:Gem::Version
|
342
|
-
version: '3'
|
236
|
+
version: '0'
|
343
237
|
- !ruby/object:Gem::Dependency
|
344
238
|
name: sass
|
345
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -374,14 +268,14 @@ dependencies:
|
|
374
268
|
requirements:
|
375
269
|
- - ">="
|
376
270
|
- !ruby/object:Gem::Version
|
377
|
-
version: '
|
271
|
+
version: '0'
|
378
272
|
type: :runtime
|
379
273
|
prerelease: false
|
380
274
|
version_requirements: !ruby/object:Gem::Requirement
|
381
275
|
requirements:
|
382
276
|
- - ">="
|
383
277
|
- !ruby/object:Gem::Version
|
384
|
-
version: '
|
278
|
+
version: '0'
|
385
279
|
- !ruby/object:Gem::Dependency
|
386
280
|
name: tzinfo
|
387
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -402,20 +296,14 @@ dependencies:
|
|
402
296
|
requirements:
|
403
297
|
- - ">="
|
404
298
|
- !ruby/object:Gem::Version
|
405
|
-
version: '
|
406
|
-
- - "<"
|
407
|
-
- !ruby/object:Gem::Version
|
408
|
-
version: '2'
|
299
|
+
version: '0'
|
409
300
|
type: :runtime
|
410
301
|
prerelease: false
|
411
302
|
version_requirements: !ruby/object:Gem::Requirement
|
412
303
|
requirements:
|
413
304
|
- - ">="
|
414
305
|
- !ruby/object:Gem::Version
|
415
|
-
version: '
|
416
|
-
- - "<"
|
417
|
-
- !ruby/object:Gem::Version
|
418
|
-
version: '2'
|
306
|
+
version: '0'
|
419
307
|
- !ruby/object:Gem::Dependency
|
420
308
|
name: valid_url
|
421
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -448,36 +336,30 @@ dependencies:
|
|
448
336
|
name: codacy-coverage
|
449
337
|
requirement: !ruby/object:Gem::Requirement
|
450
338
|
requirements:
|
451
|
-
- -
|
339
|
+
- - ">="
|
452
340
|
- !ruby/object:Gem::Version
|
453
|
-
version:
|
341
|
+
version: '0'
|
454
342
|
type: :development
|
455
343
|
prerelease: false
|
456
344
|
version_requirements: !ruby/object:Gem::Requirement
|
457
345
|
requirements:
|
458
|
-
- -
|
346
|
+
- - ">="
|
459
347
|
- !ruby/object:Gem::Version
|
460
|
-
version:
|
348
|
+
version: '0'
|
461
349
|
- !ruby/object:Gem::Dependency
|
462
350
|
name: database_cleaner-mongoid
|
463
351
|
requirement: !ruby/object:Gem::Requirement
|
464
352
|
requirements:
|
465
353
|
- - ">="
|
466
354
|
- !ruby/object:Gem::Version
|
467
|
-
version: '
|
468
|
-
- - "<"
|
469
|
-
- !ruby/object:Gem::Version
|
470
|
-
version: '3'
|
355
|
+
version: '0'
|
471
356
|
type: :development
|
472
357
|
prerelease: false
|
473
358
|
version_requirements: !ruby/object:Gem::Requirement
|
474
359
|
requirements:
|
475
360
|
- - ">="
|
476
361
|
- !ruby/object:Gem::Version
|
477
|
-
version: '
|
478
|
-
- - "<"
|
479
|
-
- !ruby/object:Gem::Version
|
480
|
-
version: '3'
|
362
|
+
version: '0'
|
481
363
|
- !ruby/object:Gem::Dependency
|
482
364
|
name: factory_bot
|
483
365
|
requirement: !ruby/object:Gem::Requirement
|
@@ -512,20 +394,14 @@ dependencies:
|
|
512
394
|
requirements:
|
513
395
|
- - ">="
|
514
396
|
- !ruby/object:Gem::Version
|
515
|
-
version: '
|
516
|
-
- - "<"
|
517
|
-
- !ruby/object:Gem::Version
|
518
|
-
version: '4'
|
397
|
+
version: '0'
|
519
398
|
type: :development
|
520
399
|
prerelease: false
|
521
400
|
version_requirements: !ruby/object:Gem::Requirement
|
522
401
|
requirements:
|
523
402
|
- - ">="
|
524
403
|
- !ruby/object:Gem::Version
|
525
|
-
version: '
|
526
|
-
- - "<"
|
527
|
-
- !ruby/object:Gem::Version
|
528
|
-
version: '4'
|
404
|
+
version: '0'
|
529
405
|
- !ruby/object:Gem::Dependency
|
530
406
|
name: minitest
|
531
407
|
requirement: !ruby/object:Gem::Requirement
|
@@ -544,16 +420,16 @@ dependencies:
|
|
544
420
|
name: minitest-rails
|
545
421
|
requirement: !ruby/object:Gem::Requirement
|
546
422
|
requirements:
|
547
|
-
- - "
|
423
|
+
- - ">="
|
548
424
|
- !ruby/object:Gem::Version
|
549
|
-
version: '
|
425
|
+
version: '0'
|
550
426
|
type: :development
|
551
427
|
prerelease: false
|
552
428
|
version_requirements: !ruby/object:Gem::Requirement
|
553
429
|
requirements:
|
554
|
-
- - "
|
430
|
+
- - ">="
|
555
431
|
- !ruby/object:Gem::Version
|
556
|
-
version: '
|
432
|
+
version: '0'
|
557
433
|
- !ruby/object:Gem::Dependency
|
558
434
|
name: minitest-reporters
|
559
435
|
requirement: !ruby/object:Gem::Requirement
|
@@ -586,16 +462,16 @@ dependencies:
|
|
586
462
|
name: shoulda
|
587
463
|
requirement: !ruby/object:Gem::Requirement
|
588
464
|
requirements:
|
589
|
-
- - "
|
465
|
+
- - "~>"
|
590
466
|
- !ruby/object:Gem::Version
|
591
|
-
version:
|
467
|
+
version: 4.0.0
|
592
468
|
type: :development
|
593
469
|
prerelease: false
|
594
470
|
version_requirements: !ruby/object:Gem::Requirement
|
595
471
|
requirements:
|
596
|
-
- - "
|
472
|
+
- - "~>"
|
597
473
|
- !ruby/object:Gem::Version
|
598
|
-
version:
|
474
|
+
version: 4.0.0
|
599
475
|
- !ruby/object:Gem::Dependency
|
600
476
|
name: shoulda-matchers
|
601
477
|
requirement: !ruby/object:Gem::Requirement
|
@@ -611,7 +487,7 @@ dependencies:
|
|
611
487
|
- !ruby/object:Gem::Version
|
612
488
|
version: '0'
|
613
489
|
- !ruby/object:Gem::Dependency
|
614
|
-
name:
|
490
|
+
name: shoulda-context
|
615
491
|
requirement: !ruby/object:Gem::Requirement
|
616
492
|
requirements:
|
617
493
|
- - ">="
|
@@ -625,7 +501,7 @@ dependencies:
|
|
625
501
|
- !ruby/object:Gem::Version
|
626
502
|
version: '0'
|
627
503
|
- !ruby/object:Gem::Dependency
|
628
|
-
name:
|
504
|
+
name: simplecov
|
629
505
|
requirement: !ruby/object:Gem::Requirement
|
630
506
|
requirements:
|
631
507
|
- - ">="
|
@@ -639,45 +515,33 @@ dependencies:
|
|
639
515
|
- !ruby/object:Gem::Version
|
640
516
|
version: '0'
|
641
517
|
- !ruby/object:Gem::Dependency
|
642
|
-
name:
|
518
|
+
name: test-unit
|
643
519
|
requirement: !ruby/object:Gem::Requirement
|
644
520
|
requirements:
|
645
521
|
- - ">="
|
646
522
|
- !ruby/object:Gem::Version
|
647
|
-
version: '
|
648
|
-
- - "<"
|
649
|
-
- !ruby/object:Gem::Version
|
650
|
-
version: '7'
|
523
|
+
version: '0'
|
651
524
|
type: :development
|
652
525
|
prerelease: false
|
653
526
|
version_requirements: !ruby/object:Gem::Requirement
|
654
527
|
requirements:
|
655
528
|
- - ">="
|
656
529
|
- !ruby/object:Gem::Version
|
657
|
-
version: '
|
658
|
-
- - "<"
|
659
|
-
- !ruby/object:Gem::Version
|
660
|
-
version: '7'
|
530
|
+
version: '0'
|
661
531
|
- !ruby/object:Gem::Dependency
|
662
532
|
name: webmock
|
663
533
|
requirement: !ruby/object:Gem::Requirement
|
664
534
|
requirements:
|
665
535
|
- - ">="
|
666
536
|
- !ruby/object:Gem::Version
|
667
|
-
version: '
|
668
|
-
- - "<"
|
669
|
-
- !ruby/object:Gem::Version
|
670
|
-
version: '4'
|
537
|
+
version: '0'
|
671
538
|
type: :development
|
672
539
|
prerelease: false
|
673
540
|
version_requirements: !ruby/object:Gem::Requirement
|
674
541
|
requirements:
|
675
542
|
- - ">="
|
676
543
|
- !ruby/object:Gem::Version
|
677
|
-
version: '
|
678
|
-
- - "<"
|
679
|
-
- !ruby/object:Gem::Version
|
680
|
-
version: '4'
|
544
|
+
version: '0'
|
681
545
|
description: Core components used in all our web products.
|
682
546
|
email:
|
683
547
|
- chris@app47.com
|
@@ -782,12 +646,10 @@ files:
|
|
782
646
|
- lib/app/models/concerns/delayed_job_configuration.rb
|
783
647
|
- lib/app/models/concerns/email_able.rb
|
784
648
|
- lib/app/models/concerns/encrypted_password.rb
|
785
|
-
- lib/app/models/concerns/google_sso_configuration.rb
|
786
649
|
- lib/app/models/concerns/role_able.rb
|
787
650
|
- lib/app/models/concerns/search_able.rb
|
788
651
|
- lib/app/models/concerns/secure_fields.rb
|
789
652
|
- lib/app/models/concerns/server_process_able.rb
|
790
|
-
- lib/app/models/concerns/ses_configuration.rb
|
791
653
|
- lib/app/models/concerns/slack_configuration.rb
|
792
654
|
- lib/app/models/concerns/standard_model.rb
|
793
655
|
- lib/app/models/concerns/switchboard_able.rb
|
@@ -833,14 +695,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
833
695
|
requirements:
|
834
696
|
- - "~>"
|
835
697
|
- !ruby/object:Gem::Version
|
836
|
-
version:
|
698
|
+
version: 3.0.2
|
837
699
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
838
700
|
requirements:
|
839
701
|
- - ">="
|
840
702
|
- !ruby/object:Gem::Version
|
841
703
|
version: '0'
|
842
704
|
requirements: []
|
843
|
-
rubygems_version: 3.
|
705
|
+
rubygems_version: 3.2.22
|
844
706
|
signing_key:
|
845
707
|
specification_version: 4
|
846
708
|
summary: App47 Web Core Library.
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# Google SSO Configuration
|
5
|
-
#
|
6
|
-
module GoogleSsoConfiguration
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.class_eval do
|
11
|
-
#
|
12
|
-
# Fields
|
13
|
-
#
|
14
|
-
field :google_client_id, type: String
|
15
|
-
field :google_client_secret, type: String
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
#
|
20
|
-
# Make sure the password doesn't get blanked out on an update
|
21
|
-
#
|
22
|
-
def secure_fields
|
23
|
-
super + %i[google_client_secret]
|
24
|
-
end
|
25
|
-
|
26
|
-
#
|
27
|
-
# Determine if AWS is configured
|
28
|
-
#
|
29
|
-
def google_sso_configured?
|
30
|
-
google_client_id.present? && google_client_secret.present?
|
31
|
-
end
|
32
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# AWS SES SSO Configuration
|
5
|
-
#
|
6
|
-
module SesConfiguration
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.class_eval do
|
11
|
-
#
|
12
|
-
# Fields
|
13
|
-
#
|
14
|
-
field :ses_source_arn_prefix, type: String
|
15
|
-
field :ses_bounce_queue_name, type: String
|
16
|
-
field :ses_region, type: String
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
#
|
21
|
-
# Determine if AWS is configured
|
22
|
-
#
|
23
|
-
def ses_configured?
|
24
|
-
aws_configured? &&
|
25
|
-
ses_source_arn_prefix.present? &&
|
26
|
-
(ses_region.present? || aws_region.present?)
|
27
|
-
end
|
28
|
-
|
29
|
-
def ses_source_arn(source = default_email)
|
30
|
-
[ses_source_arn_prefix, source].compact.join('/')
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
# SES Client
|
35
|
-
#
|
36
|
-
def aws_ses_client
|
37
|
-
return nil unless ses_configured?
|
38
|
-
|
39
|
-
# We want this to remake itself each time because it is possible that the
|
40
|
-
# => user would change the access keys in between actions. Huh?
|
41
|
-
@aws_ses_client ||= Aws::SES::Client.new(region: ses_region.presence || aws_region, credentials: aws_credentials)
|
42
|
-
end
|
43
|
-
end
|