aptible-rails 0.6.6 → 0.6.7
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/lib/aptible/rails/controller.rb +18 -1
- data/lib/aptible/rails/decorators/application_decorator.rb +1 -0
- data/lib/aptible/rails/decorators/criterion_alert_decorator.rb +61 -0
- data/lib/aptible/rails/models/compliance_alert_collection.rb +14 -0
- data/lib/aptible/rails/railtie.rb +4 -0
- data/lib/aptible/rails/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8c8647181f9193e2dadf52dce8b7c51a55f2ca9
|
4
|
+
data.tar.gz: 53bad54d3476718edeb52c6fb58309a5a5583856
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0298c7bc165caefcdf1707c75a208f84df1084d0ea6d41227de2517a5c3ee9f1538d2a9f3d68e72e0cc54c4e3e7ad0ff348ad482f7551a4c7a419f775a83519e
|
7
|
+
data.tar.gz: f936cf0cb63c5ded1e4954c6a900b54b95271927bab25783c887bbb02e0f95f78a19633d6c5e3b111e583dbb943689dab186b41d68d03af29e9213f70141adfa
|
@@ -11,7 +11,8 @@ module Aptible
|
|
11
11
|
helper_method :current_user, :current_organization, :user_url,
|
12
12
|
:organization_url, :criterion_by_handle, :auth_url,
|
13
13
|
:risk_criterion, :policy_criterion, :security_criterion,
|
14
|
-
:training_criterion, :url_helpers
|
14
|
+
:training_criterion, :url_helpers, :compliance_alerts,
|
15
|
+
:criteria
|
15
16
|
end
|
16
17
|
|
17
18
|
def current_user
|
@@ -79,6 +80,22 @@ module Aptible
|
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
83
|
+
def criteria
|
84
|
+
@criteria ||= Aptible::Gridiron::Criterion.where(
|
85
|
+
token: service_token,
|
86
|
+
organization: current_organization
|
87
|
+
)
|
88
|
+
end
|
89
|
+
|
90
|
+
def compliance_alerts
|
91
|
+
return @compliance_alerts if @compliance_alerts
|
92
|
+
@apps = Aptible::Api::App.all(token: service_token)
|
93
|
+
@users = current_organization.users
|
94
|
+
@compliance_alerts = ComplianceAlertCollection.new(
|
95
|
+
@criteria, @apps, @users
|
96
|
+
).all
|
97
|
+
end
|
98
|
+
|
82
99
|
def service_token
|
83
100
|
return unless session_token && session_token.session
|
84
101
|
return @service_token if @service_token
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class CriterionAlertDecorator < Draper::Decorator
|
2
|
+
def alerts
|
3
|
+
return [] if object.status == 'green'
|
4
|
+
send "#{object.handle}_alerts"
|
5
|
+
end
|
6
|
+
|
7
|
+
def risk_assessment_alerts
|
8
|
+
risk_url = Compliance::Application.routes.url_helpers.aptible_risk_path
|
9
|
+
|
10
|
+
[Alert.new(subject: 'Risk Assessment', requirement: 'needs to be completed',
|
11
|
+
subject_href: risk_url, cta: 'Complete Risk Assessment')]
|
12
|
+
end
|
13
|
+
|
14
|
+
def policy_manual_alerts
|
15
|
+
policy_url = Compliance::Application.routes.url_helpers.aptible_policy_path
|
16
|
+
|
17
|
+
[Alert.new(subject: 'Policy Manual', requirement: 'needs to be completed',
|
18
|
+
subject_href: policy_url, cta: 'Complete Policy Manual')]
|
19
|
+
end
|
20
|
+
|
21
|
+
def app_security_interview_alerts
|
22
|
+
all_apps.reduce([]) do |memo, app|
|
23
|
+
next if completed_apps.any? { |href| href == app.href }
|
24
|
+
app_path = Aptible::Security::Engine.routes.url_helpers
|
25
|
+
.app_path(id: app.id)
|
26
|
+
memo + [Alert.new(subject: app.handle, subject_href: app_path,
|
27
|
+
requirement: 'needs an App Security Interview',
|
28
|
+
cta: 'Complete App Security Interview')]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def training_log_alerts
|
33
|
+
all_users.reduce([]) do |memo, user|
|
34
|
+
next if completed_users.any? { |href| href == user.href }
|
35
|
+
user_path = Aptible::Training::Engine.routes.url_helpers.root_path
|
36
|
+
memo + [Alert.new(subject: user.name, subject_href: user_path,
|
37
|
+
requirement: 'needs Basic HIPAA Training',
|
38
|
+
cta: 'Complete Training')]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def completed_users
|
43
|
+
object.documents.map { |d| d.links['user'].href }.uniq
|
44
|
+
end
|
45
|
+
|
46
|
+
def completed_apps
|
47
|
+
object.documents.map { |d| d.links['app'].href }.uniq
|
48
|
+
end
|
49
|
+
|
50
|
+
def all_users
|
51
|
+
context[:users]
|
52
|
+
end
|
53
|
+
|
54
|
+
def all_apps
|
55
|
+
context[:apps]
|
56
|
+
end
|
57
|
+
|
58
|
+
def method_missing(method)
|
59
|
+
return [] if method.to_s =~ /_alerts/
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class ComplianceAlertCollection
|
2
|
+
def initialize(criteria, apps, users)
|
3
|
+
@criteria = criteria
|
4
|
+
@apps = apps
|
5
|
+
@users = users
|
6
|
+
end
|
7
|
+
|
8
|
+
def all
|
9
|
+
context = { users: @users, apps: @apps }
|
10
|
+
@criteria.map do |criterion|
|
11
|
+
CriterionAlertDecorator.decorate(criterion, context: context).alerts || []
|
12
|
+
end.flatten
|
13
|
+
end
|
14
|
+
end
|
@@ -8,6 +8,10 @@ require 'aptible/rails/garner'
|
|
8
8
|
require 'draper'
|
9
9
|
require 'aptible/rails/decorators/application_decorator'
|
10
10
|
|
11
|
+
Dir["#{File.dirname(__FILE__)}/models/**/*.rb"].each do |file|
|
12
|
+
require file
|
13
|
+
end
|
14
|
+
|
11
15
|
module Aptible
|
12
16
|
module Rails
|
13
17
|
class Railtie < ::Rails::Railtie
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptible-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
@@ -185,6 +185,7 @@ files:
|
|
185
185
|
- lib/aptible/rails/decorators/account_decorator.rb
|
186
186
|
- lib/aptible/rails/decorators/app_decorator.rb
|
187
187
|
- lib/aptible/rails/decorators/application_decorator.rb
|
188
|
+
- lib/aptible/rails/decorators/criterion_alert_decorator.rb
|
188
189
|
- lib/aptible/rails/decorators/criterion_decorator.rb
|
189
190
|
- lib/aptible/rails/decorators/database_decorator.rb
|
190
191
|
- lib/aptible/rails/decorators/operation_decorator.rb
|
@@ -194,6 +195,7 @@ files:
|
|
194
195
|
- lib/aptible/rails/decorators/user_decorator.rb
|
195
196
|
- lib/aptible/rails/draper_extensions.rb
|
196
197
|
- lib/aptible/rails/garner.rb
|
198
|
+
- lib/aptible/rails/models/compliance_alert_collection.rb
|
197
199
|
- lib/aptible/rails/railtie.rb
|
198
200
|
- lib/aptible/rails/url_helper.rb
|
199
201
|
- lib/aptible/rails/version.rb
|