panda_pal 5.4.1 → 5.4.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/app/models/panda_pal/organization.rb +4 -0
- data/app/models/panda_pal/organization_concerns/task_scheduling.rb +13 -6
- data/config/initializers/apartment.rb +1 -1
- data/lib/panda_pal/helpers/ability_mixin.rb +85 -0
- data/lib/panda_pal/helpers.rb +1 -0
- data/lib/panda_pal/version.rb +1 -1
- data/lib/panda_pal.rb +1 -1
- data/panda_pal.gemspec +0 -1
- metadata +40 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6de9e366030521aaa18328dbb06bfdb1ebb40a27493fab4c0168f85195f3838e
|
4
|
+
data.tar.gz: a08d0f4c61695f4898ec46d004e06e9115aee2759bef97499bd17501d18f14c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd659d9a64acbb986f7481faf8962dff90cdfc1c9c2654462fff6f293e9757c3d87edc55337cc56cf1ab6ab0208f0b8be186d6ba3f81e01aaaa0705cbd6137e1
|
7
|
+
data.tar.gz: 0fc0ddb7daf4ec3636deedb6e47fa866b0511ca66d338d19c19817020f7ee8ab871c08b40ef37172678c52f14a0697f8fe41ef1374b6a1c9242b9f795dbeec55
|
@@ -99,6 +99,7 @@ module PandaPal
|
|
99
99
|
'queue' => desc[:queue],
|
100
100
|
'class' => ScheduledTaskExecutor.to_s,
|
101
101
|
'args' => [name, desc[:key]],
|
102
|
+
'enabled' => !Rails.env.development?,
|
102
103
|
}
|
103
104
|
end
|
104
105
|
schedule
|
@@ -160,7 +161,7 @@ module PandaPal
|
|
160
161
|
private
|
161
162
|
|
162
163
|
def unschedule_tasks(new_task_keys = nil)
|
163
|
-
current_schedules = Sidekiq.get_schedule.select { |k,v| k.
|
164
|
+
current_schedules = Sidekiq.get_schedule.select { |k,v| k.start_with?("org:#{name}-") }
|
164
165
|
del_tasks = current_schedules.keys
|
165
166
|
del_tasks -= new_task_keys if new_task_keys
|
166
167
|
del_tasks.each do |k|
|
@@ -198,13 +199,19 @@ module PandaPal
|
|
198
199
|
|
199
200
|
Apartment::Tenant.switch(org.name) do
|
200
201
|
if worker.is_a?(Proc)
|
201
|
-
org.instance_exec(&worker)
|
202
|
+
return org.instance_exec(&worker)
|
202
203
|
elsif worker.is_a?(Symbol)
|
203
|
-
org.send(worker)
|
204
|
+
return org.send(worker)
|
204
205
|
elsif worker.is_a?(String)
|
205
|
-
worker.constantize
|
206
|
-
|
207
|
-
|
206
|
+
worker = worker.constantize
|
207
|
+
end
|
208
|
+
|
209
|
+
if worker.is_a?(Class)
|
210
|
+
if worker.respond_to?(:perform_async)
|
211
|
+
worker.perform_async
|
212
|
+
else
|
213
|
+
worker.perform_later
|
214
|
+
end
|
208
215
|
end
|
209
216
|
end
|
210
217
|
end
|
@@ -12,7 +12,7 @@ end
|
|
12
12
|
Rails.application.config.middleware.use Apartment::Elevators::Generic, lambda { |request|
|
13
13
|
if match = request.path.match(/\/(?:orgs?|organizations?)\/(\d+)/)
|
14
14
|
PandaPal::Organization.find_by(id: match[1]).try(:name)
|
15
|
-
elsif request.path.
|
15
|
+
elsif request.path.start_with?('/rails/active_storage/blobs/')
|
16
16
|
PandaPal::Organization.find_by(id: request.params['organization_id']).try(:name)
|
17
17
|
end
|
18
18
|
}
|
@@ -0,0 +1,85 @@
|
|
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
|
data/lib/panda_pal/helpers.rb
CHANGED
data/lib/panda_pal/version.rb
CHANGED
data/lib/panda_pal.rb
CHANGED
@@ -91,7 +91,7 @@ module PandaPal
|
|
91
91
|
|
92
92
|
def self.normalize_ext_type(type)
|
93
93
|
type = type.to_s
|
94
|
-
type = "#{self.to_s}::#{type}" unless type.
|
94
|
+
type = "#{self.to_s}::#{type}" unless type.start_with?('::') || type.start_with?(self.to_s)
|
95
95
|
type
|
96
96
|
end
|
97
97
|
|
data/panda_pal.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.add_dependency "rails", ">= 4.2"
|
19
19
|
s.add_dependency 'ros-apartment', '~> 2.2'
|
20
|
-
s.add_dependency 'pg', '>= 0.20', '< 1.0.0'
|
21
20
|
s.add_dependency 'ims-lti', '~> 1.2.4'
|
22
21
|
s.add_dependency 'browser', '2.5.0'
|
23
22
|
s.add_dependency 'attr_encrypted', '~> 3.0.0'
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure ProServe
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -38,26 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.2'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: pg
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.20'
|
48
|
-
- - "<"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 1.0.0
|
51
|
-
type: :runtime
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '0.20'
|
58
|
-
- - "<"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 1.0.0
|
61
41
|
- !ruby/object:Gem::Dependency
|
62
42
|
name: ims-lti
|
63
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,7 +178,7 @@ dependencies:
|
|
198
178
|
- - ">="
|
199
179
|
- !ruby/object:Gem::Version
|
200
180
|
version: '0'
|
201
|
-
description:
|
181
|
+
description:
|
202
182
|
email:
|
203
183
|
- pseng@instructure.com
|
204
184
|
executables: []
|
@@ -246,6 +226,7 @@ files:
|
|
246
226
|
- lib/panda_pal.rb
|
247
227
|
- lib/panda_pal/engine.rb
|
248
228
|
- lib/panda_pal/helpers.rb
|
229
|
+
- lib/panda_pal/helpers/ability_mixin.rb
|
249
230
|
- lib/panda_pal/helpers/controller_helper.rb
|
250
231
|
- lib/panda_pal/helpers/route_helper.rb
|
251
232
|
- lib/panda_pal/helpers/secure_headers.rb
|
@@ -300,7 +281,7 @@ homepage: http://instructure.com
|
|
300
281
|
licenses:
|
301
282
|
- MIT
|
302
283
|
metadata: {}
|
303
|
-
post_install_message:
|
284
|
+
post_install_message:
|
304
285
|
rdoc_options: []
|
305
286
|
require_paths:
|
306
287
|
- lib
|
@@ -315,50 +296,50 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
315
296
|
- !ruby/object:Gem::Version
|
316
297
|
version: '0'
|
317
298
|
requirements: []
|
318
|
-
rubygems_version: 3.
|
319
|
-
signing_key:
|
299
|
+
rubygems_version: 3.0.3
|
300
|
+
signing_key:
|
320
301
|
specification_version: 4
|
321
302
|
summary: LTI mountable engine
|
322
303
|
test_files:
|
323
|
-
- spec/
|
304
|
+
- spec/rails_helper.rb
|
305
|
+
- spec/models/panda_pal/organization_spec.rb
|
306
|
+
- spec/models/panda_pal/session_spec.rb
|
307
|
+
- spec/models/panda_pal/organization/settings_validation_spec.rb
|
308
|
+
- spec/models/panda_pal/organization/task_scheduling_spec.rb
|
309
|
+
- spec/spec_helper.rb
|
310
|
+
- spec/dummy/db/schema.rb
|
311
|
+
- spec/dummy/public/422.html
|
312
|
+
- spec/dummy/public/favicon.ico
|
313
|
+
- spec/dummy/public/404.html
|
314
|
+
- spec/dummy/public/500.html
|
324
315
|
- spec/dummy/Rakefile
|
325
|
-
- spec/dummy/app/
|
326
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
316
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
327
317
|
- spec/dummy/app/controllers/application_controller.rb
|
328
318
|
- spec/dummy/app/helpers/application_helper.rb
|
329
|
-
- spec/dummy/app/
|
330
|
-
- spec/dummy/
|
331
|
-
- spec/dummy/
|
332
|
-
- spec/dummy/bin/rake
|
333
|
-
- spec/dummy/bin/setup
|
319
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
320
|
+
- spec/dummy/app/assets/javascripts/application.js
|
321
|
+
- spec/dummy/config/secrets.yml
|
334
322
|
- spec/dummy/config/application.rb
|
335
|
-
- spec/dummy/config/boot.rb
|
336
|
-
- spec/dummy/config/database.yml
|
337
|
-
- spec/dummy/config/environment.rb
|
338
|
-
- spec/dummy/config/environments/development.rb
|
339
|
-
- spec/dummy/config/environments/production.rb
|
340
|
-
- spec/dummy/config/environments/test.rb
|
341
|
-
- spec/dummy/config/initializers/backtrace_silencers.rb
|
342
|
-
- spec/dummy/config/initializers/cookies_serializer.rb
|
343
|
-
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
344
|
-
- spec/dummy/config/initializers/inflections.rb
|
345
|
-
- spec/dummy/config/initializers/mime_types.rb
|
346
323
|
- spec/dummy/config/initializers/session_store.rb
|
347
324
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
348
|
-
- spec/dummy/config/
|
325
|
+
- spec/dummy/config/initializers/inflections.rb
|
326
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
327
|
+
- spec/dummy/config/initializers/mime_types.rb
|
328
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
329
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
330
|
+
- spec/dummy/config/environments/development.rb
|
331
|
+
- spec/dummy/config/environments/test.rb
|
332
|
+
- spec/dummy/config/environments/production.rb
|
333
|
+
- spec/dummy/config/database.yml
|
334
|
+
- spec/dummy/config/boot.rb
|
349
335
|
- spec/dummy/config/routes.rb
|
350
|
-
- spec/dummy/config/
|
336
|
+
- spec/dummy/config/environment.rb
|
337
|
+
- spec/dummy/config/locales/en.yml
|
338
|
+
- spec/dummy/README.rdoc
|
351
339
|
- spec/dummy/config.ru
|
352
|
-
- spec/dummy/
|
353
|
-
- spec/dummy/
|
354
|
-
- spec/dummy/
|
355
|
-
- spec/dummy/
|
356
|
-
- spec/dummy/public/favicon.ico
|
340
|
+
- spec/dummy/bin/bundle
|
341
|
+
- spec/dummy/bin/rake
|
342
|
+
- spec/dummy/bin/setup
|
343
|
+
- spec/dummy/bin/rails
|
357
344
|
- spec/factories/panda_pal_organizations.rb
|
358
345
|
- spec/factories/panda_pal_sessions.rb
|
359
|
-
- spec/models/panda_pal/organization/settings_validation_spec.rb
|
360
|
-
- spec/models/panda_pal/organization/task_scheduling_spec.rb
|
361
|
-
- spec/models/panda_pal/organization_spec.rb
|
362
|
-
- spec/models/panda_pal/session_spec.rb
|
363
|
-
- spec/rails_helper.rb
|
364
|
-
- spec/spec_helper.rb
|