qalam_oauth_engine 3.0.1 → 3.0.5
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_lti_key.rb +4 -0
- data/app/models/canvas_oauth/authorization.rb +10 -1
- data/db/migrate/20121121005358_create_canvas_oauth_authorizations.rb +1 -0
- data/db/migrate/20210809092919_create_canvas_lti_keys.rb +11 -0
- data/lib/canvas_oauth/canvas_api.rb +6 -1
- data/lib/canvas_oauth/canvas_api_extensions.rb +5 -2
- data/lib/canvas_oauth/canvas_config.rb +0 -5
- data/lib/canvas_oauth/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1993e64ae7d887fb6d5ca81b7d41b841a41f16f6713dfa5750c16131b64b7b04
|
4
|
+
data.tar.gz: f8be0a0e38579e6a171cef590863fcca4ce7b7f06ed891c1824d12fdc07f3b61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11c52e55a0c2f63ac009f6ef29d53601078e343959cc56ecfdc8506684aee1f70b18c65e9f3bc34328af8ddde91ba6facd2ca3277d2d5b2c525cf1ca4a92490b
|
7
|
+
data.tar.gz: bc76c81bedb0aac378b675cd6d7b6f56dc1053f5af6f70ab9518e4a34928ffba4fb6559921444c730df2b89877b645e581bac91b841765a68eac27b29e72e6df
|
@@ -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,9 +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_account(user_id, tool_consumer_instance_guid)
|
5
5
|
token = CanvasOauth::Authorization.fetch_token(user_id, tool_consumer_instance_guid)
|
6
|
-
|
6
|
+
refresh_token = CanvasOauth::Authorization.fetch_refresh_token(user_id, tool_consumer_instance_guid)
|
7
|
+
canvas_key = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(canvas_url: canvas_url)&.key) or CanvasConfig.key)
|
8
|
+
canvas_secret = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(key: canvas_key, canvas_url: canvas_url)&.secret) or CanvasConfig.secret)
|
9
|
+
CanvasApi.new(canvas_url, user_id, account_id, token, refresh_token, canvas_key, canvas_secret)
|
7
10
|
end
|
8
11
|
end
|
9
12
|
end
|
@@ -17,15 +17,10 @@ module CanvasOauth
|
|
17
17
|
config = load_config
|
18
18
|
self.key = config['key']
|
19
19
|
self.secret = config['secret']
|
20
|
-
|
21
|
-
Rails.logger.info "\n> Initializing Key #{config['key']} - Secret #{config['secret']}\n".green
|
22
|
-
|
23
20
|
elsif ENV['CANVAS_KEY'].present? && ENV['CANVAS_SECRET'].present?
|
24
21
|
Rails.logger.info "Initializing Qalam using environment vars CANVAS_KEY and CANVAS_SECRET"
|
25
22
|
self.key = ENV['CANVAS_KEY']
|
26
23
|
self.secret = ENV['CANVAS_SECRET']
|
27
|
-
|
28
|
-
Rails.logger.info "\n> Initializing Key #{ENV['CANVAS_KEY']} - Secret #{ENV['CANVAS_SECRET']}\n".green
|
29
24
|
else
|
30
25
|
warn "Warning: Qalam key and secret not configured (RAILS_ENV = #{ENV['RAILS_ENV']})."
|
31
26
|
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.5
|
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-
|
14
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: httparty
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
version: '4.2'
|
51
51
|
- - "<"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '6.1'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
version: '4.2'
|
61
61
|
- - "<"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
63
|
+
version: '6.1'
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: byebug
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
@@ -257,10 +257,12 @@ files:
|
|
257
257
|
- Rakefile
|
258
258
|
- app/controllers/canvas_oauth/canvas_controller.rb
|
259
259
|
- app/controllers/canvas_oauth/oauth_application_controller.rb
|
260
|
+
- app/models/canvas_lti_key.rb
|
260
261
|
- app/models/canvas_oauth/authorization.rb
|
261
262
|
- config/canvas.yml.example
|
262
263
|
- config/routes.rb
|
263
264
|
- db/migrate/20121121005358_create_canvas_oauth_authorizations.rb
|
265
|
+
- db/migrate/20210809092919_create_canvas_lti_keys.rb
|
264
266
|
- lib/canvas_oauth.rb
|
265
267
|
- lib/canvas_oauth/canvas_api.rb
|
266
268
|
- lib/canvas_oauth/canvas_api_extensions.rb
|
@@ -330,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
332
|
- !ruby/object:Gem::Version
|
331
333
|
version: '0'
|
332
334
|
requirements: []
|
333
|
-
rubygems_version: 3.2.
|
335
|
+
rubygems_version: 3.2.22
|
334
336
|
signing_key:
|
335
337
|
specification_version: 4
|
336
338
|
summary: CanvasOauth is a mountable engine for handling the oauth workflow with canvas
|