Module: CanvasSync::Concerns::AbilityHelper
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/canvas_sync/concerns/ability_helper.rb
Instance Method Summary collapse
- #canvas_account_roles ⇒ Object
- #canvas_course_roles ⇒ Object
-
#canvas_permissions ⇒ Object
CanvasSync Domain.
- #canvas_role_labels ⇒ Object
- #canvas_roles ⇒ Object
- #canvas_root_account_roles ⇒ Object
- #canvas_site_admin? ⇒ Boolean
- #canvas_super_user? ⇒ Boolean
- #canvas_user_id ⇒ Object
- #is_lti_launch? ⇒ Boolean
- #launch_account ⇒ Object
-
#launch_context ⇒ Object
Middle Domain.
- #launch_params ⇒ Object
- #lti_roles ⇒ Object
-
#panda_pal_session ⇒ Object
PandaPal Domain.
- #rails_session ⇒ Object
Instance Method Details
#canvas_account_roles ⇒ Object
78 79 80 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 78 def canvas_account_roles canvas_roles.where(base_role_type: 'AccountMembership') end |
#canvas_course_roles ⇒ Object
82 83 84 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 82 def canvas_course_roles canvas_roles.where.not(base_role_type: 'AccountMembership') end |
#canvas_permissions ⇒ Object
CanvasSync Domain
56 57 58 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 56 def panda_pal_session[:canvas_permissions] ||= ::Role.(canvas_roles) end |
#canvas_role_labels ⇒ Object
23 24 25 26 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 23 def canvas_role_labels labels = launch_params['custom_canvas_role'] labels.is_a?(String) ? labels.split(',') : [] end |
#canvas_roles ⇒ Object
60 61 62 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 60 def canvas_roles @canvas_roles ||= Role.for_labels(canvas_role_labels, launch_account) end |
#canvas_root_account_roles ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 64 def canvas_root_account_roles role_labels = if "::Admin".safe_constantize && ::Admin < ::ActiveRecord::Base adm_query = ::Admin.where(canvas_account_id: current_organization.canvas_account_id, workflow_state: "active") adm_query.pluck(:role_name) else Rails.cache.fetch([self.class.name, "RootAccountAdminLinks", canvas_user_id], expires_in: 1.hour) do admin_entries = canvas_sync_client.account_admins('self', user_id: [canvas_user_id]) admin_entries = admin_entries.select{|ent| ent[:workflow_state] == 'active' } admin_entries.map{|ent| ent[:role] } end end ::Role.for_labels(role_labels, ::Account.find_by(canvas_parent_account_id: nil)) end |
#canvas_site_admin? ⇒ Boolean
32 33 34 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 32 def canvas_site_admin? lti_roles.system_roles.include?("sys_admin") end |
#canvas_super_user? ⇒ Boolean
86 87 88 89 90 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 86 def canvas_super_user? cache_on_session(:canvas_super_user?) do canvas_site_admin? || canvas_root_account_roles.map(&:label).include?("Account Admin") end end |
#canvas_user_id ⇒ Object
92 93 94 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 92 def canvas_user_id user.canvas_id end |
#is_lti_launch? ⇒ Boolean
15 16 17 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 15 def is_lti_launch? panda_pal_session.present? end |
#launch_account ⇒ Object
50 51 52 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 50 def launch_account @launch_account ||= launch_context.respond_to?(:account) ? launch_context.account : ::Account.find_by(canvas_id: launch_params['custom_canvas_account_id']) end |
#launch_context ⇒ Object
Middle Domain
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 38 def launch_context @launch_context ||= begin if launch_params['launch_type'] == "global_navigation" :global elsif launch_params['custom_canvas_course_id'].present? ::Course.find_by(canvas_id: launch_params['custom_canvas_course_id']) else ::Account.find_by(canvas_id: launch_params['custom_canvas_account_id']) end end end |
#launch_params ⇒ Object
19 20 21 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 19 def launch_params @launch_params ||= panda_pal_session[:launch_params] || {} end |
#lti_roles ⇒ Object
28 29 30 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 28 def lti_roles @lti_roles ||= LTIRoles::RoleManager.new(launch_params['ext_roles'] || '') end |
#panda_pal_session ⇒ Object
PandaPal Domain
7 8 9 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 7 def panda_pal_session @panda_pal_session ||= @controller.current_session&.data || {} end |
#rails_session ⇒ Object
11 12 13 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 11 def rails_session @rails_session ||= @controller.session end |