Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/packbackbooks/lti-1-3-php-library
A library used for building IMS-certified LTI 1.3 tool providers in PHP.
https://github.com/packbackbooks/lti-1-3-php-library
lti lti-tool lti1p3
Last synced: 13 days ago
JSON representation
A library used for building IMS-certified LTI 1.3 tool providers in PHP.
- Host: GitHub
- URL: https://github.com/packbackbooks/lti-1-3-php-library
- Owner: packbackbooks
- License: apache-2.0
- Fork: true (1EdTech/lti-1-3-php-library)
- Created: 2020-05-27T20:27:58.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-18T16:10:42.000Z (3 months ago)
- Last Synced: 2025-01-29T05:16:00.657Z (16 days ago)
- Topics: lti, lti-tool, lti1p3
- Language: PHP
- Homepage:
- Size: 793 KB
- Stars: 39
- Watchers: 6
- Forks: 25
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-lti - LTI 1.3 Tool Library
- awesome-lti - LTI 1.3 Tool Library
README
# LTI 1.3 Tool Library
![Test status](https://github.com/packbackbooks/lti-1-3-php-library/actions/workflows/run_tests.yml/badge.svg?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/16055e83ea04ad95a2f9/maintainability)](https://codeclimate.com/github/packbackbooks/lti-1-3-php-library/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/16055e83ea04ad95a2f9/test_coverage)](https://codeclimate.com/github/packbackbooks/lti-1-3-php-library/test_coverage)
A library used for building IMS-certified LTI 1.3 tool providers in PHP.
This library allows a tool provider (your app) to receive LTI launches from a tool consumer (i.e. LMS). It validates LTI launches and lets an application interact with services like the Names Roles Provisioning Service (to fetch a roster for an LMS course) and Assignment Grades Service (to update grades for students in a course in the LMS).
This library was forked from [IMSGlobal/lti-1-3-php-library](https://github.com/IMSGlobal/lti-1-3-php-library), initially created by @MartinLenord. [Packback](https://packback.co) found the library immensely helpful and extended it over the years. It has been rewritten by Packback to bring it into compliance with the standards set out by the PHP-FIG and the IMS LTI 1.3 Certification process. Packback actively uses and maintains this library.
## Installation
Run:
```bash
composer require packbackbooks/lti-1p3-tool
```In your code, you will now be able to use classes in the `Packback\Lti1p3` namespace to access the library.
### Configure JWT
Add the following when bootstrapping your app.
```php
Firebase\JWT\JWT::$leeway = 5;
```### Implement Data Storage Interfaces
This library uses three methods for storing and accessing data: cache, cookie, and database. All three must be implemented in order for the library to work. You may create your own custom implementations so long as they adhere to the following interfaces:
- `Packback\Lti1p3\Interfaces\ICache`
- `Packback\Lti1p3\Interfaces\ICookie`
- `Packback\Lti1p3\Interfaces\IDatabase` or optionally `Packback\Lti1p3\Interfaces\IMigrationDatabase`View the [Laravel Implementation Guide](https://github.com/packbackbooks/lti-1-3-php-library/wiki/Laravel-Implementation-Guide) to see examples (or copy/paste the code outright).
### Create a JWKS endpoint
A JWKS (JSON Web Key Set) endpoint can be generated for either an individual registration or from an array of `KID`s and private keys.
```php
use Packback\Lti1p3\JwksEndpoint;// From issuer
JwksEndpoint::fromIssuer($database, 'http://example.com')->getPublicJwks();
// From registration
JwksEndpoint::fromRegistration($registration)->getPublicJwks();
// From array
JwksEndpoint::new(['a_unique_KID' => file_get_contents('/path/to/private/key.pem')])->getPublicJwks();
```## Documentation
[The wiki](https://github.com/packbackbooks/lti-1-3-php-library/wiki) provides more detailed information about how to use this library, including a [Laravel Implementation Guide](https://github.com/packbackbooks/lti-1-3-php-library/wiki/Laravel-Implementation-Guide).
## Contributing
For improvements, suggestions or bug fixes, make a pull request or an issue. Before opening a pull request, add automated tests for your changes, ensure that all tests pass, and any linting errors are fixed.
### Testing
Automated tests can be run using the command:
```bash
composer test
```Linting can be run using
```bash
# Display linting errors
composer lint
# Automatically fix linting errors
composer lint-fix
```