Module: CanvasSync::Concerns::AbilityHelper
- Extended by:
- ActiveSupport::Concern
- Includes:
- PandaPal::Concerns::AbilityHelper
- Defined in:
- lib/canvas_sync/concerns/ability_helper.rb
Instance Method Summary collapse
- #canvas_account_admin?(account = launch_account) ⇒ Boolean
- #canvas_account_roles ⇒ Object
- #canvas_course_roles ⇒ Object
- #canvas_permissions ⇒ Object
- #canvas_roles ⇒ Object
- #canvas_root_account_roles ⇒ Object
- #canvas_super_user? ⇒ Boolean
- #canvas_user_id ⇒ Object
- #launch_account ⇒ Object
- #launch_context ⇒ Object
-
#load_canvas_model(model, canvas_id) ⇒ Object
CanvasSync Domain.
- #panda_pal_session ⇒ Object
-
#user ⇒ Object
Middle Domain.
Instance Method Details
#canvas_account_admin?(account = launch_account) ⇒ Boolean
93 94 95 96 97 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 93 def canvas_account_admin?(account = launch_account) panda_pal_session.cache([:canvas_account_admin?, account]) do panda_pal_session.canvas_site_admin? || (panda_pal_session.canvas_account_role_labels(account) & ["AccountAdmin", "Account Admin"]).present? end end |
#canvas_account_roles ⇒ Object
81 82 83 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 81 def canvas_account_roles canvas_roles.where(base_role_type: 'AccountMembership') end |
#canvas_course_roles ⇒ Object
85 86 87 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 85 def canvas_course_roles canvas_roles.where.not(base_role_type: 'AccountMembership') end |
#canvas_permissions ⇒ Object
68 69 70 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 68 def panda_pal_session[:canvas_permissions] ||= ::Role.(canvas_roles) end |
#canvas_roles ⇒ Object
72 73 74 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 72 def canvas_roles @canvas_roles ||= Role.for_labels(panda_pal_session.canvas_role_labels, launch_account) end |
#canvas_root_account_roles ⇒ Object
76 77 78 79 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 76 def canvas_root_account_roles role_labels = panda_pal_session.canvas_account_role_labels('self') ::Role.for_labels(role_labels, ::Account.find_by(canvas_parent_account_id: nil)) end |
#canvas_super_user? ⇒ Boolean
89 90 91 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 89 def canvas_super_user? canvas_account_admin?(:root) end |
#canvas_user_id ⇒ Object
99 100 101 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 99 def canvas_user_id user&.canvas_id || panda_pal_session.get_lti_cust_param('canvas_user_id') end |
#launch_account ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 43 def launch_account return @launch_account if defined?(@launch_account) if launch_context.respond_to?(:account) @launch_account = launch_context.account @launch_account ||= load_canvas_model(::Account, launch_context.canvas_account_id) if launch_context.respond_to?(:canvas_account_id) end @launch_account ||= load_canvas_model(::Account, panda_pal_session.get_lti_cust_param('custom_canvas_account_id')) @launch_account end |
#launch_context ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 29 def launch_context return nil unless panda_pal_session.present? @launch_context ||= begin if panda_pal_session.lti_launch_placement == "global_navigation" :global elsif panda_pal_session.get_lti_cust_param('custom_canvas_course_id').present? load_canvas_model(::Course, panda_pal_session.get_lti_cust_param('custom_canvas_course_id')) else load_canvas_model(::Account, panda_pal_session.get_lti_cust_param('custom_canvas_account_id')) end end end |
#load_canvas_model(model, canvas_id) ⇒ Object
CanvasSync Domain
58 59 60 61 62 63 64 65 66 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 58 def load_canvas_model(model, canvas_id) return nil unless model < CanvasSync::Record if model.respond_to?(:find_or_jit_sync) model.find_or_jit_sync(canvas_id) else model.find_by(canvas_id: canvas_id) end end |
#panda_pal_session ⇒ Object
14 15 16 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 14 def panda_pal_session raise "This feature was moved to PandaPal as of CanvasSync 0.20.0/PandaPal 5.9.9. You should update to PandaPal >= 5.9.9." end |
#user ⇒ Object
Middle Domain
21 22 23 24 25 26 27 |
# File 'lib/canvas_sync/concerns/ability_helper.rb', line 21 def user return @user if defined?(@user) canvas_user_id = panda_pal_session.get_lti_cust_param('custom_canvas_user_id') @user = load_canvas_model(::User, canvas_user_id) if canvas_user_id.present? @user end |