38 lines
1.1 KiB
PHP
38 lines
1.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use Illuminate\Http\RedirectResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Packback\Lti1p3\Interfaces\ICache;
|
||
|
|
use Packback\Lti1p3\Interfaces\ICookie;
|
||
|
|
use Packback\Lti1p3\Interfaces\IDatabase;
|
||
|
|
use Packback\Lti1p3\LtiOidcLogin;
|
||
|
|
use Packback\Lti1p3\OidcException;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Première étape du lancement LTI 1.3 (V2) : Moodle appelle cette URL
|
||
|
|
* (« initiate_login_url », enregistrée une fois par plateforme) pour
|
||
|
|
* démarrer la connexion OIDC, avant de rediriger l'utilisateur vers la
|
||
|
|
* vraie page de lancement — voir LtiLancementController.
|
||
|
|
*/
|
||
|
|
class LtiConnexionController extends Controller
|
||
|
|
{
|
||
|
|
public function connecter(Request $request, IDatabase $db, ICache $cache, ICookie $cookie): RedirectResponse
|
||
|
|
{
|
||
|
|
$donnees = $request->all();
|
||
|
|
|
||
|
|
if (! isset($donnees['target_link_uri'])) {
|
||
|
|
abort(400, 'target_link_uri manquant.');
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
$url = LtiOidcLogin::new($db, $cache, $cookie)->getRedirectUrl($donnees['target_link_uri'], $donnees);
|
||
|
|
} catch (OidcException $e) {
|
||
|
|
abort(400, $e->getMessage());
|
||
|
|
}
|
||
|
|
|
||
|
|
return redirect()->away($url);
|
||
|
|
}
|
||
|
|
}
|