swisnl / laravel-lti-provider
Laravel lti provider
Installs: 1 609
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 1
Requires
- php: ^8.1 | ^8.2 | ^8.3
- celtic/lti: ^5.0
- laravel/framework: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.15
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-12-08 23:17:38 UTC
README
This packages provides a bridge between the Celtic LTI Package and Laravel models, by implementing a DataConnector for the Celtic LTI Package.
Install
Via Composer
$ composer require swisnl/laravel-lti-provider
Then run command to copy the required files (including the migrations) into your project.
php artisan lti-provider:install
If 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 migrate
Cron jobs
The 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(); }
Usage
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);
Customization
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).
Change log
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.
Credits
License
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 ❤️ Open Source
SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.