web47core 3.0.4 → 3.0.5
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 +8 -6
- data/app/views/system_configurations/_show.html.haml +2 -1
- data/lib/app/controllers/concerns/core_system_configuration_controller.rb +16 -5
- data/lib/app/models/concerns/aws_configuration.rb +26 -1
- data/lib/app/models/concerns/cdn_url.rb +2 -7
- data/lib/app/models/concerns/google_sso_configuration.rb +32 -0
- data/lib/app/models/concerns/standard_model.rb +1 -1
- data/lib/web47core/version.rb +1 -1
- data/lib/web47core.rb +1 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e480097cdfea5056f5b2a510cbfe10ff47e27166751a1dfb269c60f2ac6dee32
|
4
|
+
data.tar.gz: 43ef160463a3b082c7840d9f6dc003d2acff45cf981d6c8caa7a9fdf0a5392d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a13cce11223eb01510f2a98ba33c66c71ee0850e57bc6476e130dc5c2ceb1a98be8d09174e30ae93521aff9a029f14c57a2a3422779d30b4be2649c473918bf
|
7
|
+
data.tar.gz: 95d123e80b3ed0ef34d6573a572c8a896ae8bee252f60a6809bc1ac83fd8ca45b15e0be51e21207b0b837ad1bfb2947d72c4bbd04bf77bd8b77d3344a10e0299
|
data/README.md
CHANGED
@@ -10,22 +10,22 @@ Core components used commonly among all web apps for both App47 and RedMonocle
|
|
10
10
|
|
11
11
|
## Requirements
|
12
12
|
|
13
|
-
* Ruby
|
13
|
+
* Ruby 3.0.2
|
14
14
|
|
15
15
|
### Working with Bundler and RBENV
|
16
16
|
|
17
17
|
This project manages [RBENV](https://github.com/rbenv/rbenv) and manages dependencies via [Bundler](http://gembundler.com/).
|
18
18
|
|
19
19
|
You must first [install RBENV](https://github.com/rbenv/rbenv#installation).
|
20
|
-
Then install Ruby
|
20
|
+
Then install Ruby 3.0.2 via RBENV
|
21
21
|
``` shell script
|
22
|
-
rbenv install
|
22
|
+
rbenv install 3.0.2
|
23
23
|
```
|
24
24
|
You'll now notice that this project (as well as other App47 ones) contains a .ruby-version file, which is executed upon opening the project's root directory in a terminal (and IDE's like RubyMine). The .ruby-version file simply states `2.7.0` which tells RBENV to ensure the Ruby version to use for this project is 2.7.0.
|
25
25
|
|
26
|
-
Please note, your Ruby `
|
26
|
+
Please note, your Ruby `3.0.2` version might need bundler installed:
|
27
27
|
``` shell script
|
28
|
-
gem install bundler -v 2.
|
28
|
+
gem install bundler -v 2.5.4
|
29
29
|
```
|
30
30
|
|
31
31
|
To set up this project's dependencies, which are defined in the file, `Gemfile`, you should first run
|
@@ -188,7 +188,9 @@ 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]
|
191
|
+
resource :system_configurations, only: %i[edit update show] do
|
192
|
+
get :sync
|
193
|
+
end
|
192
194
|
#
|
193
195
|
# Delayed jobs
|
194
196
|
#
|
@@ -7,6 +7,7 @@
|
|
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))
|
10
11
|
.card
|
11
12
|
.card-content.section-data-tables
|
12
13
|
%table.highlight.striped.data-table
|
@@ -15,7 +16,7 @@
|
|
15
16
|
=table_header_tag :field
|
16
17
|
=table_header_tag :value
|
17
18
|
%tbody
|
18
|
-
- SystemConfiguration.allowed_param_names.each do |field|
|
19
|
+
- SystemConfiguration.allowed_param_names.sort.each do |field|
|
19
20
|
%tr
|
20
21
|
%td=field
|
21
22
|
%td=mask_system_configuration(field)
|
@@ -10,15 +10,26 @@ module CoreSystemConfigurationsController
|
|
10
10
|
# Edit the system configuration
|
11
11
|
#
|
12
12
|
def edit
|
13
|
-
|
13
|
+
system_configuration
|
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
|
14
26
|
end
|
15
27
|
|
16
28
|
#
|
17
29
|
# Update and log the system configuration changes
|
18
30
|
#
|
19
31
|
def update
|
20
|
-
|
21
|
-
SystemConfiguration.configuration.update! system_configuration_params
|
32
|
+
system_configuration.update! system_configuration_params
|
22
33
|
if SystemConfiguration.switchboard_configured?
|
23
34
|
flash[:info] = 'System Configuration Updated, sync job running in the background'
|
24
35
|
Cron::SwitchboardSyncConfiguration.perform_later
|
@@ -28,7 +39,7 @@ module CoreSystemConfigurationsController
|
|
28
39
|
redirect_to index_path
|
29
40
|
rescue StandardError => error
|
30
41
|
log_controller_error error
|
31
|
-
|
42
|
+
system_configuration
|
32
43
|
render :edit
|
33
44
|
end
|
34
45
|
|
@@ -44,7 +55,7 @@ module CoreSystemConfigurationsController
|
|
44
55
|
#
|
45
56
|
# Load the current system configuration
|
46
57
|
#
|
47
|
-
def
|
58
|
+
def system_configuration
|
48
59
|
@system_configuration = SystemConfiguration.configuration
|
49
60
|
end
|
50
61
|
end
|
@@ -15,6 +15,7 @@ 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
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -22,7 +23,7 @@ module AwsConfiguration
|
|
22
23
|
# Make sure the password doesn't get blanked out on an update
|
23
24
|
#
|
24
25
|
def secure_fields
|
25
|
-
super + %i[
|
26
|
+
super + %i[aws_secret_access_key]
|
26
27
|
end
|
27
28
|
|
28
29
|
#
|
@@ -38,4 +39,28 @@ module AwsConfiguration
|
|
38
39
|
def aws_auto_scaling_configured?
|
39
40
|
aws_configured? && aws_auto_scaling_group_name.present?
|
40
41
|
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# AWS client.
|
45
|
+
#
|
46
|
+
def aws_ec2_client
|
47
|
+
return nil unless aws_configured?
|
48
|
+
|
49
|
+
@aws_ec2_client ||= Aws::EC2::Client.new(region: aws_region,
|
50
|
+
credentials: Aws::Credentials.new(aws_access_key_id,
|
51
|
+
aws_secret_access_key))
|
52
|
+
end
|
53
|
+
|
54
|
+
#
|
55
|
+
# S3 Client
|
56
|
+
#
|
57
|
+
def aws_s3_client
|
58
|
+
return nil unless aws_configured?
|
59
|
+
|
60
|
+
# We want this to remake itself each time because it is possible that the
|
61
|
+
# => user would change the access keys in between actions. Huh?
|
62
|
+
@aws_s3_client ||= Aws::S3::Client.new(region: aws_region,
|
63
|
+
access_key_id: aws_access_key_id,
|
64
|
+
secret_access_key: aws_secret_access_key)
|
65
|
+
end
|
41
66
|
end
|
@@ -17,14 +17,9 @@
|
|
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
|
27
20
|
|
21
|
+
# @abstract Catch methods started with `cdn_` and respond to those requests if there is a
|
22
|
+
# matching method ending in `_url`
|
28
23
|
def method_missing(method, *args)
|
29
24
|
if method.to_s.start_with? 'cdn_'
|
30
25
|
url = if args.blank?
|
@@ -0,0 +1,32 @@
|
|
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
|
@@ -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
|
73
73
|
attribute_names.delete_if { |name| filter_names.include?(name) }
|
74
74
|
end
|
75
75
|
|
data/lib/web47core/version.rb
CHANGED
data/lib/web47core.rb
CHANGED
@@ -9,6 +9,7 @@ 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'
|
12
13
|
require 'app/models/concerns/search_able'
|
13
14
|
require 'app/models/concerns/role_able'
|
14
15
|
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: 3.0.
|
4
|
+
version: 3.0.5
|
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: 2024-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 8.1.4
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 8.1.4
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: rails
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -646,6 +646,7 @@ files:
|
|
646
646
|
- lib/app/models/concerns/delayed_job_configuration.rb
|
647
647
|
- lib/app/models/concerns/email_able.rb
|
648
648
|
- lib/app/models/concerns/encrypted_password.rb
|
649
|
+
- lib/app/models/concerns/google_sso_configuration.rb
|
649
650
|
- lib/app/models/concerns/role_able.rb
|
650
651
|
- lib/app/models/concerns/search_able.rb
|
651
652
|
- lib/app/models/concerns/secure_fields.rb
|