qalam_oauth_engine 3.0.3 → 3.0.4
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/canvas_oauth/canvas_controller.rb +10 -1
- data/app/models/canvas_oauth/authorization.rb +10 -1
- data/db/migrate/20121121005358_create_canvas_oauth_authorizations.rb +1 -0
- data/lib/canvas_oauth/canvas_api.rb +6 -1
- data/lib/canvas_oauth/canvas_api_extensions.rb +3 -2
- data/lib/canvas_oauth/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: e153aaa7541aee767fe47cb0824831482a12f392f1bd87803ee4ad4703e7d30f
         | 
| 4 | 
            +
              data.tar.gz: '0494829ca2a3a9d94c7ddee7ca5b853de2df985e74e1d3f142f1d805578826ad'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2bca130d4a82b30db36ebb3fb1a6208db2b7cc6350cd97e8c1a9e9ada3498e0d3f431f2c4f626db35bfeb03e540e27a1b9e5543487380da2b9b73783b4b6d0cc
         | 
| 7 | 
            +
              data.tar.gz: 91a7d377612aa1e3d5036e730348224c7c0d0f60f0aa1635d4c4f1f6f6d7d847f6c9f40430bb3538d4e6cb8638893d2b6ccf0f631aebdcd6768953cb1ab293df
         | 
| @@ -5,8 +5,9 @@ module CanvasOauth | |
| 5 5 | 
             
                def oauth
         | 
| 6 6 | 
             
                  if verify_oauth2_state(params[:state]) && params[:code]
         | 
| 7 7 | 
             
                    if token = canvas.get_access_token(params[:code])
         | 
| 8 | 
            +
                      set_root_account
         | 
| 8 9 | 
             
                      refresh_token = canvas.refresh_token
         | 
| 9 | 
            -
                      if CanvasOauth::Authorization.cache_token(token, refresh_token, user_id, tool_consumer_instance_guid)
         | 
| 10 | 
            +
                      if CanvasOauth::Authorization.cache_token(token, refresh_token, user_id, @root_account_id, tool_consumer_instance_guid)
         | 
| 10 11 | 
             
                        redirect_to main_app.root_path
         | 
| 11 12 | 
             
                      else
         | 
| 12 13 | 
             
                        render plain: "Error: unable to save token"
         | 
| @@ -23,4 +24,12 @@ module CanvasOauth | |
| 23 24 | 
             
                  callback_state.present? && callback_state == session.delete(:oauth2_state)
         | 
| 24 25 | 
             
                end
         | 
| 25 26 | 
             
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def set_root_account
         | 
| 29 | 
            +
                if current_account_id
         | 
| 30 | 
            +
                  @root_account_id = canvas.root_account_id(current_account_id)
         | 
| 31 | 
            +
                elsif current_course_id
         | 
| 32 | 
            +
                  @root_account_id = canvas.course_root_account_id(current_course_id)
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 26 35 | 
             
            end
         | 
| @@ -2,16 +2,25 @@ module CanvasOauth | |
| 2 2 | 
             
              class Authorization < ActiveRecord::Base
         | 
| 3 3 | 
             
                validates :canvas_user_id, :token, :refresh_token, :last_used_at, presence: true
         | 
| 4 4 |  | 
| 5 | 
            -
                def self.cache_token(token, refresh_token, user_id, tool_consumer_instance_guid)
         | 
| 5 | 
            +
                def self.cache_token(token, refresh_token, user_id, account_id, tool_consumer_instance_guid)
         | 
| 6 6 | 
             
                  create do |t|
         | 
| 7 7 | 
             
                    t.token = token
         | 
| 8 8 | 
             
                    t.refresh_token = refresh_token
         | 
| 9 9 | 
             
                    t.canvas_user_id = user_id
         | 
| 10 | 
            +
                    t.canvas_root_account_id = account_id
         | 
| 10 11 | 
             
                    t.tool_consumer_instance_guid = tool_consumer_instance_guid
         | 
| 11 12 | 
             
                    t.last_used_at = Time.now
         | 
| 12 13 | 
             
                  end
         | 
| 13 14 | 
             
                end
         | 
| 14 15 |  | 
| 16 | 
            +
                def self.fetch_account(user_id, tool_consumer_instance_guid)
         | 
| 17 | 
            +
                  user_accounts = where(canvas_user_id: user_id, tool_consumer_instance_guid: tool_consumer_instance_guid).order("created_at DESC")
         | 
| 18 | 
            +
                  if canvas_auth = user_accounts.first
         | 
| 19 | 
            +
                    canvas_auth.update_attribute(:last_used_at, Time.now)
         | 
| 20 | 
            +
                    return canvas_auth.canvas_root_account_id
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 15 24 | 
             
                def self.fetch_token(user_id, tool_consumer_instance_guid)
         | 
| 16 25 | 
             
                  user_tokens = where(canvas_user_id: user_id, tool_consumer_instance_guid: tool_consumer_instance_guid).order("created_at DESC")
         | 
| 17 26 | 
             
                  if canvas_auth = user_tokens.first
         | 
| @@ -2,6 +2,7 @@ class CreateCanvasOauthAuthorizations < ActiveRecord::Migration[4.2] | |
| 2 2 | 
             
              def change
         | 
| 3 3 | 
             
                create_table "canvas_oauth_authorizations", :force => true do |t|
         | 
| 4 4 | 
             
                  t.integer  "canvas_user_id", :limit => 8
         | 
| 5 | 
            +
                  t.integer  "canvas_root_account_id", :limit => 8
         | 
| 5 6 | 
             
                  t.string   "tool_consumer_instance_guid", :null => false
         | 
| 6 7 | 
             
                  t.string   "token"
         | 
| 7 8 | 
             
                  t.string   "refresh_token"
         | 
| @@ -6,7 +6,7 @@ module CanvasOauth | |
| 6 6 | 
             
                attr_accessor :token, :refresh_token, :key, :secret
         | 
| 7 7 | 
             
                attr_reader :canvas_url, :canvas_user_id
         | 
| 8 8 |  | 
| 9 | 
            -
                def initialize(canvas_url, canvas_user_id, token, refresh_token, key, secret)
         | 
| 9 | 
            +
                def initialize(canvas_url, canvas_user_id, canvas_root_account_id, token, refresh_token, key, secret)
         | 
| 10 10 | 
             
                  unless [key, secret].all?(&:present?)
         | 
| 11 11 | 
             
                    raise "Invalid Qalam oAuth configuration"
         | 
| 12 12 | 
             
                  end
         | 
| @@ -14,6 +14,7 @@ module CanvasOauth | |
| 14 14 | 
             
                  self.refresh_token = refresh_token
         | 
| 15 15 | 
             
                  self.canvas_url = canvas_url
         | 
| 16 16 | 
             
                  self.canvas_user_id = canvas_user_id
         | 
| 17 | 
            +
                  self.canvas_root_account_id = canvas_root_account_id
         | 
| 17 18 | 
             
                  self.token = token
         | 
| 18 19 | 
             
                  self.key = key
         | 
| 19 20 | 
             
                  self.secret = secret
         | 
| @@ -130,6 +131,10 @@ module CanvasOauth | |
| 130 131 | 
             
                def canvas_user_id=(value)
         | 
| 131 132 | 
             
                  @canvas_user_id = value
         | 
| 132 133 | 
             
                end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                def canvas_root_account_id=(value)
         | 
| 136 | 
            +
                  @canvas_root_account_id = value
         | 
| 137 | 
            +
                end
         | 
| 133 138 |  | 
| 134 139 | 
             
                def hex_sis_id(name, value)
         | 
| 135 140 | 
             
                  hex = value.unpack("H*")[0]
         | 
| @@ -1,11 +1,12 @@ | |
| 1 1 | 
             
            module CanvasOauth
         | 
| 2 2 | 
             
              class CanvasApiExtensions
         | 
| 3 3 | 
             
                def self.build(canvas_url, user_id, tool_consumer_instance_guid)
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  account_id = CanvasOauth::Authorization.fetch_ccount(user_id, tool_consumer_instance_guid)
         | 
| 5 5 | 
             
                  token = CanvasOauth::Authorization.fetch_token(user_id, tool_consumer_instance_guid)
         | 
| 6 | 
            +
                  refresh_token = CanvasOauth::Authorization.fetch_refresh_token(user_id, tool_consumer_instance_guid)
         | 
| 6 7 | 
             
                  canvas_key = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(canvas_url: canvas_url)&.key) or CanvasConfig.key)
         | 
| 7 8 | 
             
                  canvas_secret = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(key: canvas_key, canvas_url: canvas_url)&.secret) or CanvasConfig.secret)
         | 
| 8 | 
            -
                  CanvasApi.new(canvas_url, user_id, token, refresh_token, canvas_key, canvas_secret)
         | 
| 9 | 
            +
                  CanvasApi.new(canvas_url, user_id, account_id, token, refresh_token, canvas_key, canvas_secret)
         | 
| 9 10 | 
             
                end
         | 
| 10 11 | 
             
              end
         | 
| 11 12 | 
             
            end
         | 
    
        data/lib/canvas_oauth/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: qalam_oauth_engine
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.0. | 
| 4 | 
            +
              version: 3.0.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dave Donahue
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2021-08- | 
| 14 | 
            +
            date: 2021-08-22 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: httparty
         |