panda_pal 5.4.4 → 5.4.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/app/controllers/panda_pal/application_controller.rb +8 -0
- data/app/lib/panda_pal/launch_url_helpers.rb +14 -0
- data/app/models/panda_pal/organization_concerns/task_scheduling.rb +1 -0
- data/db/migrate/20171205194657_remove_old_organization_settings.rb +2 -0
- data/lib/panda_pal/helpers.rb +0 -1
- data/lib/panda_pal/version.rb +1 -1
- metadata +2 -3
- data/lib/panda_pal/helpers/ability_mixin.rb +0 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f1be48801ad434039bdca5a2a0a9f5c46ecb367487c773c66bc302cf1d218f7
|
4
|
+
data.tar.gz: fdc202caaf5132714191559b206809b553f49daf801f6c3e7f7dcba35bfa57e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10e708bb0f43c4ab219b0577237e221336ca5ca4759829757c009ea81e6e35528988e84f51d1bdaea2cae4a73d1d865fd896347171c7d27b1f6b9d9d4a9ece0c
|
7
|
+
data.tar.gz: f78cc8ee0232484e4133a9b3300c44748a310573be24b74813c2c57f35fbc1d174631e6d587a5be0c12fe5b9f1ea9ff5b51cbed463e83a0f6ddf0a8231484508
|
@@ -1,4 +1,12 @@
|
|
1
1
|
module PandaPal
|
2
2
|
class ApplicationController < ActionController::Base
|
3
|
+
around_action :share_controller_on_thread
|
4
|
+
|
5
|
+
def share_controller_on_thread
|
6
|
+
Thread.current[:controller] = self
|
7
|
+
yield
|
8
|
+
ensure
|
9
|
+
Thread.current[:controller] = nil
|
10
|
+
end
|
3
11
|
end
|
4
12
|
end
|
@@ -17,10 +17,24 @@ module PandaPal
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def self.url_for(options)
|
21
|
+
request = Thread.current[:controller]&.request
|
22
|
+
host = "#{request.scheme}://#{request.host_with_port}"
|
23
|
+
if options.is_a?(Symbol)
|
24
|
+
Rails.application.routes.url_helpers.send(options, host: host)
|
25
|
+
else
|
26
|
+
options[:host] ||= host
|
27
|
+
Rails.application.routes.url_helpers.url_for(options)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
20
31
|
def self.normalize_lti_launch_desc(opts)
|
21
32
|
opts = opts.dup
|
22
33
|
opts.delete(:route_helper_key)
|
23
34
|
opts.delete(:auto_launch)
|
35
|
+
opts.each do |k, v|
|
36
|
+
opts[k] = v.call if v.is_a?(Proc)
|
37
|
+
end
|
24
38
|
opts
|
25
39
|
end
|
26
40
|
|
@@ -18,6 +18,8 @@ class RemoveOldOrganizationSettings < PandaPal::MiscHelper::MigrationClass
|
|
18
18
|
#PandaPal::Organization.connection.schema_cache.clear!
|
19
19
|
#PandaPal::Organization.reset_column_information
|
20
20
|
PandaPal::Organization.find_each do |o|
|
21
|
+
next unless o.old_settings.present?
|
22
|
+
|
21
23
|
# Would like to just be able to do this:
|
22
24
|
# o.settings = YAML.load(o.old_settings)
|
23
25
|
# o.save!
|
data/lib/panda_pal/helpers.rb
CHANGED
data/lib/panda_pal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: panda_pal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.4.
|
4
|
+
version: 5.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure ProServe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -226,7 +226,6 @@ files:
|
|
226
226
|
- lib/panda_pal.rb
|
227
227
|
- lib/panda_pal/engine.rb
|
228
228
|
- lib/panda_pal/helpers.rb
|
229
|
-
- lib/panda_pal/helpers/ability_mixin.rb
|
230
229
|
- lib/panda_pal/helpers/controller_helper.rb
|
231
230
|
- lib/panda_pal/helpers/route_helper.rb
|
232
231
|
- lib/panda_pal/helpers/secure_headers.rb
|
@@ -1,85 +0,0 @@
|
|
1
|
-
module PandaPal
|
2
|
-
module AbilityMixin
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
class_methods do
|
6
|
-
def self.role_permissions(labels)
|
7
|
-
roles = find_roles_by_label(labels)
|
8
|
-
|
9
|
-
if Rails.env.test? && roles.count == 0 && (labels || []).include?('Administrator')
|
10
|
-
return Hash.new(true)
|
11
|
-
end
|
12
|
-
|
13
|
-
final = {}
|
14
|
-
roles.find_each do |role|
|
15
|
-
role.permissions.each do |perm_name, perm|
|
16
|
-
final[perm_name] = false if final[perm_name].nil?
|
17
|
-
final[perm_name] = true if perm['enabled'] == true
|
18
|
-
end
|
19
|
-
end
|
20
|
-
final
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.find_roles_by_label(labels)
|
24
|
-
raise "PandaPal AbilityMixin's support for Roles and Permissions requires that Roles be synced by CanvasSync" unless defined?(Role)
|
25
|
-
|
26
|
-
built_ins = []
|
27
|
-
labels = labels.split(',') if labels.is_a?(String)
|
28
|
-
custom_labels = Array(labels).reject do |l|
|
29
|
-
if role_is_default?(l)
|
30
|
-
built_ins << l
|
31
|
-
elsif l == 'Account Admin'
|
32
|
-
built_ins << 'AccountMembership'
|
33
|
-
else
|
34
|
-
next
|
35
|
-
end
|
36
|
-
true
|
37
|
-
end
|
38
|
-
Role.where(workflow_state: 'built_in', base_role_type: built_ins)
|
39
|
-
.or(Role.where.not(workflow_state: 'built_in').where(label: custom_labels))
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.role_is_default?(role)
|
43
|
-
%w[TeacherEnrollment TaEnrollment StudentEnrollment DesignerEnrollment ObserverEnrollment].include? role
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def is_lti_launch?
|
48
|
-
@controller.current_session.present?
|
49
|
-
end
|
50
|
-
|
51
|
-
def panda_pal_session
|
52
|
-
@panda_pal_session ||= @controller.current_session&.data || {}
|
53
|
-
end
|
54
|
-
|
55
|
-
def rails_session
|
56
|
-
@rails_session ||= @controller.session
|
57
|
-
end
|
58
|
-
|
59
|
-
def launch_params
|
60
|
-
@launch_params ||= panda_pal_session[:launch_params] || {}
|
61
|
-
end
|
62
|
-
|
63
|
-
# Roles and Permissions
|
64
|
-
def lti_roles
|
65
|
-
@lti_roles ||= LTIRoles::RoleManager.new(launch_params['ext_roles'] || '')
|
66
|
-
end
|
67
|
-
|
68
|
-
def canvas_permissions
|
69
|
-
panda_pal_session[:canvas_permissions] ||= self.class.role_permissions(launch_params['custom_canvas_role'])
|
70
|
-
end
|
71
|
-
|
72
|
-
def canvas_role_labels
|
73
|
-
labels = launch_params['custom_canvas_role']
|
74
|
-
labels.is_a?(String) ? labels.split(',') : []
|
75
|
-
end
|
76
|
-
|
77
|
-
def canvas_roles
|
78
|
-
self.class.find_roles_by_label(canvas_role_labels)
|
79
|
-
end
|
80
|
-
|
81
|
-
def launch_role_ids
|
82
|
-
panda_pal_session[:launch_role_ids] ||= canvas_roles.map(&:canvas_id)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|