Class: PandaPal::Platform::Canvas

Inherits:
PandaPal::Platform show all
Defined in:
app/models/panda_pal/platform/canvas.rb

Defined Under Namespace

Modules: OrgExtension

Constant Summary collapse

TRUSTED_ISSUERS =
[
  "https://sso.canvaslms.com",
  "https://sso.beta.canvaslms.com",
  "https://sso.test.canvaslms.com",
  "https://sso.loadtest.instructure.com",

  # Deprecated (but still secure):
  "https://canvas.instructure.com",
  "https://canvas.beta.instructure.com",
  "https://canvas.test.instructure.com",
]

Instance Method Summary collapse

Methods inherited from PandaPal::Platform

deserialize, find_org_setting, from_serialized, organization_api, #public_jwks, resolve_platform, resolve_platform_class, resolve_raw_platform

Constructor Details

#initialize(options) ⇒ Canvas

Returns a new instance of Canvas.



20
21
22
# File 'app/models/panda_pal/platform/canvas.rb', line 20

def initialize(options)
  @issuer = options[:iss]
end

Instance Method Details

#authentication_redirect_urlObject



32
33
34
# File 'app/models/panda_pal/platform/canvas.rb', line 32

def authentication_redirect_url
  "#{lti_api_domain}/api/lti/authorize_redirect"
end

#grant_urlObject



36
37
38
# File 'app/models/panda_pal/platform/canvas.rb', line 36

def grant_url
  "#{lti_api_domain}/login/oauth2/token"
end

#is_trusted_env?Boolean

Returns:

  • (Boolean)


40
41
42
43
44
# File 'app/models/panda_pal/platform/canvas.rb', line 40

def is_trusted_env?
  return true unless Rails.env.production?

  TRUSTED_ISSUERS.include?(platform_uri)
end

#jwks_urlObject



28
29
30
# File 'app/models/panda_pal/platform/canvas.rb', line 28

def jwks_url
  "#{lti_api_domain}/api/lti/security/jwks"
end

#platform_uriObject



24
25
26
# File 'app/models/panda_pal/platform/canvas.rb', line 24

def platform_uri
  @issuer
end

#serializeObject



46
47
48
# File 'app/models/panda_pal/platform/canvas.rb', line 46

def serialize
  super.merge(iss: @issuer)
end