panda_pal 5.6.0 → 5.6.3
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/lti_v1_p0_controller.rb +5 -1
 - data/app/controllers/panda_pal/lti_v1_p3_controller.rb +13 -1
 - data/app/models/panda_pal/platform.rb +3 -1
 - data/lib/panda_pal/engine.rb +1 -1
 - data/lib/panda_pal/helpers/controller_helper.rb +9 -3
 - data/lib/panda_pal/helpers/route_helper.rb +1 -4
 - data/lib/panda_pal/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 79e31ac9d48be7e13d818cd57950034fa982726721bb9c451bac65ee3aaee702
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1bf00f07eba7546e160b2ee268e3bbfd37fdd3dfdf339999e8f322c43ceb6780
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4dfa6dbf1aff76385844bb204aab7298d4096410df44cc2646643fe28bd2a2d54c9960f932c624544ee990218fc95022e27964c73b7604545fafa6618630fa0b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0a74434217765714b28247315515ba9c6c71931d367e96130d3ed51a4f334ce43c03d80a0bdb6dfeee27caeff98f36c857cd525e61ee294a36db88f2619e4e76
         
     | 
| 
         @@ -2,7 +2,11 @@ require_dependency "panda_pal/application_controller" 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module PandaPal
         
     | 
| 
       4 
4 
     | 
    
         
             
              class LtiV1P0Controller < ApplicationController
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 5 
     | 
    
         
            +
                if Rails.version < '5.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
                  skip_before_action :verify_authenticity_token
         
     | 
| 
      
 7 
     | 
    
         
            +
                else
         
     | 
| 
      
 8 
     | 
    
         
            +
                  skip_before_action :verify_authenticity_token, raise: false
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       6 
10 
     | 
    
         | 
| 
       7 
11 
     | 
    
         
             
                def launch
         
     | 
| 
       8 
12 
     | 
    
         
             
                  current_session_data.merge!({
         
     | 
| 
         @@ -2,11 +2,23 @@ require_dependency "panda_pal/application_controller" 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module PandaPal
         
     | 
| 
       4 
4 
     | 
    
         
             
              class LtiV1P3Controller < ApplicationController
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 5 
     | 
    
         
            +
                if Rails.version < '5.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
                  skip_before_action :verify_authenticity_token
         
     | 
| 
      
 7 
     | 
    
         
            +
                else
         
     | 
| 
      
 8 
     | 
    
         
            +
                  skip_before_action :verify_authenticity_token, raise: false
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       6 
11 
     | 
    
         
             
                before_action :validate_launch!, only: [:resource_link_request]
         
     | 
| 
       7 
12 
     | 
    
         
             
                around_action :switch_tenant, only: [:resource_link_request]
         
     | 
| 
       8 
13 
     | 
    
         | 
| 
       9 
14 
     | 
    
         
             
                def login
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # TODO Figure out how to make this support deployment_ids
         
     | 
| 
      
 16 
     | 
    
         
            +
                  #   May need to move Platform#jwks_url and Platform#authentication_redirect_url to
         
     | 
| 
      
 17 
     | 
    
         
            +
                  #   a new GenericPlatform class/model and then associate the here-generated Session with
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #   the public tenant, re-homing it once we have a deployment_id available
         
     | 
| 
      
 19 
     | 
    
         
            +
                  #   ... or create a new AuthState model instead of using Session here
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @organization = PandaPal::Organization.find_by!(key: params[:client_id])
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       10 
22 
     | 
    
         
             
                  current_session_data[:lti_oauth_nonce] = SecureRandom.uuid
         
     | 
| 
       11 
23 
     | 
    
         | 
| 
       12 
24 
     | 
    
         
             
                  @form_action = current_lti_platform.authentication_redirect_url
         
     | 
| 
         @@ -3,6 +3,8 @@ begin 
     | 
|
| 
       3 
3 
     | 
    
         
             
            rescue LoadError
         
     | 
| 
       4 
4 
     | 
    
         
             
            end
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            require 'httparty'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       6 
8 
     | 
    
         
             
            module PandaPal
         
     | 
| 
       7 
9 
     | 
    
         
             
              class Platform
         
     | 
| 
       8 
10 
     | 
    
         
             
                def public_jwks
         
     | 
| 
         @@ -49,7 +51,7 @@ module PandaPal 
     | 
|
| 
       49 
51 
     | 
    
         
             
                  "#{base_url}/login/oauth2/token"
         
     | 
| 
       50 
52 
     | 
    
         
             
                end
         
     | 
| 
       51 
53 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                def base_url;  
     | 
| 
      
 54 
     | 
    
         
            +
                def base_url; @organization.canvas_url; end # TODO Dissolve?
         
     | 
| 
       53 
55 
     | 
    
         | 
| 
       54 
56 
     | 
    
         
             
                module OrgExtension
         
     | 
| 
       55 
57 
     | 
    
         
             
                  def install_lti(host: nil, context: :root_account, version: 'v1p1', exists: :error)
         
     | 
    
        data/lib/panda_pal/engine.rb
    CHANGED
    
    | 
         @@ -60,7 +60,7 @@ module PandaPal 
     | 
|
| 
       60 
60 
     | 
    
         
             
                  ActionDispatch::Routing::Mapper.send :include, PandaPal::Helpers::RouteHelper
         
     | 
| 
       61 
61 
     | 
    
         
             
                end
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
                initializer 'panda_pal.route_options' do |app|
         
     | 
| 
      
 63 
     | 
    
         
            +
                initializer 'panda_pal.route_options', after: :build_middleware_stack do |app|
         
     | 
| 
       64 
64 
     | 
    
         
             
                  ActiveSupport.on_load(:action_controller) do
         
     | 
| 
       65 
65 
     | 
    
         
             
                    Rails.application.reload_routes!
         
     | 
| 
       66 
66 
     | 
    
         
             
                    PandaPal::validate_pandapal_config!
         
     | 
| 
         @@ -59,7 +59,15 @@ module PandaPal::Helpers 
     | 
|
| 
       59 
59 
     | 
    
         
             
                  raise JSON::JWT::VerificationFailed, 'error decoding id_token' if decoded_jwt.blank?
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
                  client_id = decoded_jwt['aud']
         
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
      
 62 
     | 
    
         
            +
                  deployment_id = decoded_jwt['https://purl.imsglobal.org/spec/lti/claim/deployment_id']
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  if deployment_id.present?
         
     | 
| 
      
 65 
     | 
    
         
            +
                    @organization ||= PandaPal::Organization.find_by(key: "#{client_id}/#{deployment_id}")
         
     | 
| 
      
 66 
     | 
    
         
            +
                    @organization ||= PandaPal::Organization.find_by(key: deployment_id)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  @organization ||= PandaPal::Organization.find_by(key: client_id)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       63 
71 
     | 
    
         
             
                  raise JSON::JWT::VerificationFailed, 'Unrecognized Organization' unless @organization.present?
         
     | 
| 
       64 
72 
     | 
    
         | 
| 
       65 
73 
     | 
    
         
             
                  decoded_jwt.verify!(current_lti_platform.public_jwks)
         
     | 
| 
         @@ -124,8 +132,6 @@ module PandaPal::Helpers 
     | 
|
| 
       124 
132 
     | 
    
         | 
| 
       125 
133 
     | 
    
         
             
                def organization_key
         
     | 
| 
       126 
134 
     | 
    
         
             
                  org_key ||= params[:oauth_consumer_key]
         
     | 
| 
       127 
     | 
    
         
            -
                  org_key ||= "#{params[:client_id]}/#{params[:deployment_id]}" if params[:client_id].present? && params[:deployment_id].present?
         
     | 
| 
       128 
     | 
    
         
            -
                  org_key ||= params[:client_id] if params[:client_id].present?
         
     | 
| 
       129 
135 
     | 
    
         
             
                  org_key ||= session[:organization_key]
         
     | 
| 
       130 
136 
     | 
    
         
             
                  org_key
         
     | 
| 
       131 
137 
     | 
    
         
             
                end
         
     | 
| 
         @@ -10,10 +10,7 @@ module PandaPal::Helpers::RouteHelper 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                lti_options = options.delete(:lti_options) || {}
         
     | 
| 
       12 
12 
     | 
    
         
             
                lti_options[:auto_launch] = options.delete(:auto_launch)
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                if lti_options[:auto_launch].nil?
         
     | 
| 
       15 
     | 
    
         
            -
                  lti_options[:auto_launch] = (@scope[:path] || '').include?(':organization_id')
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
                lti_options[:auto_launch] = true if lti_options[:auto_launch].nil? && (@scope[:path] || '').include?(':organization_id')
         
     | 
| 
       17 
14 
     | 
    
         | 
| 
       18 
15 
     | 
    
         
             
                lti_options[:route_helper_key] = path.split('/').reject(&:empty?).join('_')
         
     | 
| 
       19 
16 
     | 
    
         
             
                post(path, options.dup, &block)
         
     | 
    
        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.6. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 5.6.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Instructure ProServe
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-09-01 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rails
         
     |