Paillasse/portail/app/Http/Controllers/LtiConnexionController.php

38 lines
1.1 KiB
PHP
Raw Normal View History

<?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);
}
}