Skip to content
Snippets Groups Projects
  • Andy Shultz's avatar
    a52eef76
    feat: update lti API to pick config via launch data · a52eef76
    Andy Shultz authored
    Note that this uses config_id (the UUID) not config.id (the int)
    
    This required a way to get config_id if we only have the block.
    
    And it means that we are more likely to go through load_block_as_user
    because we have not created the config off the block even when calling
    from the block (since the block has to go through that config ID).
    
    A lot of tests had to be updated to have more complete configuration
    setup because config_id is now load bearing.
    a52eef76
    History
    feat: update lti API to pick config via launch data
    Andy Shultz authored
    Note that this uses config_id (the UUID) not config.id (the int)
    
    This required a way to get config_id if we only have the block.
    
    And it means that we are more likely to go through load_block_as_user
    because we have not created the config off the block even when calling
    from the block (since the block has to go through that config ID).
    
    A lot of tests had to be updated to have more complete configuration
    setup because config_id is now load bearing.
CHANGELOG.rst 8.25 KiB

Changelog

Please See the [releases tab](https://github.com/edx/xblock-lti-consumer/releases) for the complete changelog.

Unreleased

6.0.0 - 2022-10-24

BREAKING CHANGE:

Please note that additional breaking changes will be forthcoming in future versions of this library.

  • Modified Python API methods to use config_id (the UUID field) exclusively rather than config.id or block.
    • For the functions changed in 5.0.0 the config_id is available in the launch_data.
    • Other functions had config.id changed to config_id and block removed as an argument.
    • The new function config_id_for_block gets that config ID if all you have is a block.

5.0.1 - 2022-10-17

  • Fixed a bug that prevented LTI 1.3 launches from occurring in the browser due to Django's clickjacking protection.
    • Added the xframe_options_exempt view decorator to launch_gate_endpoint to allow loading response in an <iframe> tags
  • Fixed a bug in the URL used for an LTI 1.3 launch; the library now sends LTI 1.3 launches to the redirect_uri provided by the Tool in the authentication request, instead of the preregistered target_link_uri.

5.0.0 - 2022-10-12

BREAKING CHANGE:

Please note that additional breaking changes will be forthcoming in future versions of this library.

  • Modified Python API methods to take Lti1p3LaunchData as a required argument
    • get_lti_1p3_launch_info
    • get_lti_1p3_launch_start_url
    • get_lti_1p3_content_url
  • Added an Lti1p3LaunchData data class
  • Added caching for Lti1p3LaunchData to limit data sent in request query or form parameters
  • Replaced references to LtiConsumerXBlock.location with Lti1p3LaunchData.config_id
  • Removed definition of key LTI 1.3 claims from the launch_gate_endpoint and instantiated Lti1p3LaunchData from within the LtiConsumerXBlock instead
  • Added a required launch_data_key request query parameter to the deep_linking_content_endpoint and refactored associated templates and template tags to pass this parameter in the request to the view
  • Changed the access token URL and Keyset URL to use the LtiConfiguration.config_id in the URL instead of the LtiConfiguration.location

4.4.0 - 2022-08-17

  • Move the LTI 1.3 Access Token and Launch Callback endpoint logic from the XBlock to the Django views
  • Adds support for accessing LTI 1.3 URLs using both location and the lti_config_id

4.2.2 - 2022-06-30

  • Fix server 500 error when using names/roles and grades services, due to not returning a user during auth.

4.2.1 - 2022-06-27

  • Add event tracking to LTI launches

4.0.1 - 2022-05-09

  • Add Learner to LTI launch roles in addition to the Student value

4.0.0 - 2022-05-09

  • Adds support for loading external LTI configurations from Open edX plugins implementing filters for the event org.openedx.xblock.lti_consumer.configuration.listed.v1. This can be enabled by setting a Course Waffle Flag lti_consumer.enable_external_config_filter for specific courses.

3.4.7 - 2022-07-08

  • Fix server 500 error when using names/roles and grades services, due to not returning a user during auth. This is a bugfix backport of 4.2.2 for the Nutmeg release.

3.4.6 - 2022-03-31

  • Fix rendering of lti_1p3_launch_error.html and lti_1p3_permission_error.html templates

3.4.5 - 2022-03-16

  • Fix LTI Deep Linking return endpoint permission checking method by replacing the old one with the proper Studio API call.

3.4.4 - 2022-03-03

3.4.3 - 2022-02-01

  • Fix LTI 1.1 template rendering when using embeds in the platform

3.4.2 - 2022-02-01

  • Fix LTI 1.1 form rendering so it properly renders quotes present in titles.
  • Migrate LTI 1.1 launch template from Mako to Django template.
  • Internationalize LTI 1.1 launch template.

3.4.1 - 2022-02-01

3.4.0 - 2022-01-31

  • Fix the version number by bumping it up to 3.4.0

3.3.0 - 2022-01-20

  • Added support for specifying LTI 1.3 JWK URLs.

3.2.0 - 2022-01-18

  • Dynamic custom parameters support with the help of template parameter processors.

3.1.2 - 2021-11-12

  • The modal to confirm information transfer on open of lti in new tab/window has been updated because of a change in how browsers handle iframe permissions.

3.1.0 - 2021-10-?

  • The changes which led to this version change were not adequetly documented.

3.0.1 - 2021-07-09

  • Added multi device support on student_view for mobile.

3.0.0 - 2021-06-16

  • Rename CourseEditLTIFieldsEnabledFlag to CourseAllowPIISharingInLTIFlag to highlight its increased scope.
  • Use CourseAllowPIISharingInLTIFlag for LTI1.3 in lieu of the current CourseWaffleFlag.

2.11.0 - 2021-06-10

  • NOTE: This release requires a corresponding change in edx-platform that was implemented in https://github.com/edx/edx-platform/pull/27529 As such, this release cannot be installed in releases before Maple.
  • Move CourseEditLTIFieldsEnabledFlag from edx-platform to this repo while retaining data from existing model.

2.10.1 - 2021-06-09

  • LTI 1.3 and LTI Advantage features are now enabled by default.
  • LTI 1.3 settings were simplified to reduce confusion when setting up a LTI tool.
  • Code quality issues fixed

2.9.1 - 2021-06-03

  • LTI Advantage - NRP Service: this completes Advantage compliance.

2.8.0 - 2021-04-13

  • LTI Advantage - AGS Service: Added support for programmatic grade management by LTI tools.
  • Improved grade publishing to LMS when using LTI-AGS.
  • Increase LTI 1.3 token validity to 1h.

2.7.0 - 2021-02-16

  • Add support for presenting ltiResourceLink content from deep linking.

2.6.0 - 2021-02-16

  • Deep Linking content presentation implementation, for resource links, HTML, HTML links, and images.
  • Fix bug with config_id migration where an entry was created _during_ the migration and did _not_ receive a valid UUID value.

2.5.3 - 2021-01-26

  • LTI Deep Linking Launch implementation, implementing DeepLinking Classes and request request preparation.
  • LTI Deep Linking response endpoint implementation, along with model to store selected configuration and content items.

2.5.2 - 2021-01-20

  • Fix issue with migration that causes migration failure due to duplicate config_id values.

2.5.1 - 2021-01-19

  • Simplify LTI 1.3 launches by removing OIDC launch start view.

2.5.0 - 2021-01-15

  • Add LTI 1.1 config on model.

2.4.0 - 2020-12-02

  • Partially implemented the Assignment and Grades Service to enable tools reporting grades back. Tools cannot create new LineItems.

2.3 – 2020-08-27

  • Move LTI configuration access to plugin model.

2.2 – 2020-08-19

  • Modals are sent to the parent window to work well with the courseware micro-frontend. A new message is sent to the parent window to request a modal containing the contents ot the LTI launch iframe.

2.1 – 2020-08-03

  • The LTI consumer XBlock is now indexable.
  • Implement the LTI 1.3 context claim.

2.0.0 – 2020-06-26

  • LTI 1.3 support.