This packages provides a bridge between the Celtic LTI Package and Laravel models, by implementing a DataConnector for the Celtic LTI Package.
Via Composer
$ composer require swisnl/laravel-lti-providerThen run command to copy the required files (including the migrations) into your project.
php artisan lti-provider:installIf you have Laravel package auto discovery disabled, add the service provider to your config/app.php file:
'providers' => [
// ...
Swis\Laravel\Lti\Providers\LtiProviderServiceProvider::class,
];Finally run the migrations.
php artisan migrateThe package comes with a command to clean up expired LTI nonces. To run this command, add the following to your
app/Console/Kernel.php file:
protected function schedule(Schedule $schedule)
{
// ...
$schedule->command('lti-provider:delete-expired-nonces')->daily();
}Define a model that you use as an LTI environment. This model should implement the
Swis\Laravel\Lti\Contracts\LtiEnvironment. The packages scopes all other models to the current LTI environment.
Using this this environment, you can create a new ModelDataConnector instance. This instance can be used like the
DataConnector from the Celtic LTI Package.
$environment = MyLtiEnvironment::find($id);
$dataConnector = new ModelDataConnector($environment);This package allows overriding most of the models. We use this to override some models to use UUIDs instead of numeric
ids, and to add some extra functionality (examples of this extra functionality: adding logging to UserResult; and
using the same Client model for both LTI and Laravel Passport).
To override a model (except the client), create a new class that extends the original model and register the new model
in the config/lti-provider.php file. For example, to override the UserResult model, create a new class that extends
the Swis\Laravel\Lti\Models\UserResult class and change the following to your config/lti-provider.php file:
'models' => [
'user-result' => 'REFERENCE TO YOUR NEW CLASS',
],Clients are a bit different, because you don't need to extend from an existing class. To override the client, create a
new class that implements the Swis\Laravel\Lti\Contracts\Client interface and register the new model in the
config/lti-provider.php file.
For inspiration on how to implement your own client, take a look at the Swis\Laravel\Lti\Models\SimpleClient class
(a very basic implementation) or the \Workbench\App\OverrideModels\Client class (this is a more complex example used
in the tests to check if it is possible to override the default implementation and if the package can handle clients
with UUIDs instead of numeric ids).
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.
SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.