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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d5f44f20e6e7274024cb0db320eea0b44c806fe1071a6b1f22f55126d9705a7
4
- data.tar.gz: 98a8dbd9c702bcf62038b8acc8916c2357684995fb44538ac95a073d6254af8d
3
+ metadata.gz: e153aaa7541aee767fe47cb0824831482a12f392f1bd87803ee4ad4703e7d30f
4
+ data.tar.gz: '0494829ca2a3a9d94c7ddee7ca5b853de2df985e74e1d3f142f1d805578826ad'
5
5
  SHA512:
6
- metadata.gz: 33f504f27fad28dd842e8cc0c8e1766e77dc1561b6fbd93e9b798ee29f72355431f7acca0007cdf0b82d2d131b82b4d3b6bb116d0190c12889dcf4bcc2f96699
7
- data.tar.gz: fd3270a95699a8cc7c9bedbda1b0ec3cc46a2bf31ff06f363e50b1d5f6dbd459b83487bbf2a8f6ae09793bffe5fdadcb16e8ae5a044f22e0564a413238f5dd14
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
- refresh_token = CanvasOauth::Authorization.fetch_refresh_token(user_id, tool_consumer_instance_guid)
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
@@ -1,3 +1,3 @@
1
1
  module CanvasOauth
2
- VERSION = "3.0.3"
2
+ VERSION = "3.0.4"
3
3
  end
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.3
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-09 00:00:00.000000000 Z
14
+ date: 2021-08-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty