Giter Club home page Giter Club logo

openedx-lti-tool-plugin's Introduction

Open edX LTI Tool Plugin

Open edX support for LTI 1.3 tool resource link launches and LTI Assignment and Grade Services.

Getting Started

Installation on Open edX Devstack

  1. Install the Olive version of the Open edX devstack.
  2. Clone this repository:
cd ~openedx/src/  # Assuming that devstack is in  ~/openedx/devstack/
git clone [email protected]:Pearson-Advance/openedx-lti-tool-plugin.git
  1. Install plugin on your LMS:
cd ~openedx/devstack/  # Change for your devstack path (if you are using devstack)
make lms-shell  # Shell into the lms container (or server where lms process runs)
pip install -e /edx/src/openedx-lti-tool-plugin
/edx/app/edxapp/edx-platform/manage.py lms migrate openedx_lti_tool_plugin # Run plugin migrations
  1. Set the lms setting OLTITP_ENABLE_LTI_TOOL to True and add LtiAuthenticationBackend to AUTHENTICATION_BACKENDS:
echo 'OLTITP_ENABLE_LTI_TOOL=True' >> ~openedx/edx-platform/lms/envs/devstack_docker.py
echo 'AUTHENTICATION_BACKENDS.append('openedx_lti_tool_plugin.auth.LtiAuthenticationBackend')' >> ~openedx/edx-platform/lms/envs/devstack_docker.py
  1. Restart the LMS.

Development Setup

  1. Clone this repository:
git clone [email protected]:Pearson-Advance/openedx-lti-tool-plugin.git
  1. Set up a virtualenv:
cd openedx-lti-tool-plugin
virtualenv venv
source venv/bin/activate
  1. Install development dependencies:
make dev-requirements
  1. Run code tests and code quality tests:
make test && make quality
  1. (Optional) If the LTI tool is on a local environment (devstack), expose the LMS to an external domain (Example: ngrok, Cloudflare Tunnel <https://www.cloudflare.com/products/tunnel/>).
  2. Go to LMS Admin > PyLTI 1.3 Tool Config > Lti 1.3 tools.
  3. Create a new LTI 1.3 tool configuration with all your platform details.
4. Go to your LTI platform and set the login and keyset URL of the LTI tool:
5. Setup the tool link URL:
  1. Execute an LTI 1.3 resource launch from the LTI platform.
  2. The LTI 1.3 resource launch should successfully take you to the requested content.

LTI 1.3 Assignment and Grade Services Compatibility

This LTI tool supports AGS (Assignment and Grade Services) for both unit/problem and course resource link launches, AGS requires the LTI platform to send a line item and allow POST score updates, if no line item or POST score permission is sent, the resource link launch will fail requesting such configuration.

Plugin Settings

LMS Settings

  • `OLTITP_ENABLE_LTI_TOOL`: Enables or disables the LTI tool plugin.
  • `LtiAuthenticationBackend`: Class needed to be added to AUTHENTICATION_BACKENDS.

Django Waffle Switches

  • `openedx_lti_tool_plugin.course_access_configuration`: Toggles the "Course Access Configuration" feature.
  • `openedx_lti_tool_plugin.allow_complete_course_launch`: Toggles the "Complete Course Launch" feature.
  • `openedx_lti_tool_plugin.save_pii_data`: Toggles the "Save PII Data" feature.

Optional Features

Course Access Configuration

By default, all resource links to all courses are allowed. If course access needs to be restricted you can set up a course access configuration policy for each LTI tool configuration deployed, this will allow you to set a list of allowed courses that an LTI tool configuration deployed is allowed for LTI 1.3 resource launches. Follow these next steps to set this feature:

  1. Enable the Django Waffle switch: openedx_lti_tool_plugin.course_access_configuration.
  2. Go to LMS Admin > Open edX LTI Tool Plugin > Course access configurations.
  3. On the configuration list, find the configuration that matches the previously created LTI tool.
  4. Edit the "Allowed Course IDs" field and add the courses that should be allowed.

Complete Course Launch

By default, the LTI tool doesn't support LTI 1.3 resource launches over a complete Open edX course, with this feature, you can enable resource launches over a whole Open edX course, this will redirect the launch user to the Open edX learning MFE for the requested course: Follow these next steps to set this feature:

  1. Enable the Django Waffle switch: openedx_lti_tool_plugin.allow_complete_course_launch.
  2. Setup an LTI 1.3 resource launch URL to a course (Example: http://localhost:18000/openedx_lti_tool_plugin/course/course-v1:ORG+RUN)
  3. Execute the LTI 1.3 launch on the platform.
  4. The launch should redirect you to the course in the Open edX learning MFE.

Save PII Data

By default, PII data is not obtained from launch data, this feature allows you to extract PII data from the standard OpenID Connect Standard Claims (https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) sent on the LTI 1.3 launch. Follow these next steps to set this feature:

  1. Enable the Django Waffle switch: openedx_lti_tool_plugin.save_pii_data.
  2. Set up an LTI 1.3 platform that uses claims such as email, name, given_name, family_name, and locale.
  3. Execute the LTI 1.3 launch on the platform.
  4. Go to LMS Admin > Open edX LTI Tool Plugin > LTI profiles.
  5. On the LTI profiles list, find the LTI profile that matches the Platform ID, Client ID, and Subject ID of your platform launch.
  6. The LTI profile should contain data on the PII JSON field.

License

The code in this repository is licensed under the Apache License 2.0 .

Please see LICENSE.txt for details.

openedx-lti-tool-plugin's People

Contributors

alexjmpb avatar jacatove avatar kuipumu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

openedx-lti-tool-plugin's Issues

License?

Hello! What's the license of the repository?

Would also like to understand what remains in terms of features and help out.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.