parent
efc6b431c4
commit
fd2a1bcf3e
@ -0,0 +1,131 @@ |
|||||||
|
<?php |
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
namespace Chamilo\PluginBundle\Entity\LtiProvider; |
||||||
|
|
||||||
|
use Doctrine\ORM\Mapping as ORM; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class Platform |
||||||
|
* |
||||||
|
* @package Chamilo\PluginBundle\Entity\LtiProvider |
||||||
|
* |
||||||
|
* @ORM\Table(name="plugin_lti_provider_platform_key") |
||||||
|
* @ORM\Entity() |
||||||
|
*/ |
||||||
|
class PlatformKey |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @var string |
||||||
|
* |
||||||
|
* @ORM\Column(name="public_key", type="text") |
||||||
|
*/ |
||||||
|
public $publicKey; |
||||||
|
/** |
||||||
|
* @var int |
||||||
|
* |
||||||
|
* @ORM\Column(name="id", type="integer") |
||||||
|
* @ORM\Id() |
||||||
|
* @ORM\GeneratedValue() |
||||||
|
*/ |
||||||
|
protected $id; |
||||||
|
/** |
||||||
|
* @var string |
||||||
|
* |
||||||
|
* @ORM\Column(name="kid", type="string") |
||||||
|
*/ |
||||||
|
private $kid; |
||||||
|
/** |
||||||
|
* @var string |
||||||
|
* |
||||||
|
* @ORM\Column(name="private_key", type="text") |
||||||
|
*/ |
||||||
|
private $privateKey; |
||||||
|
|
||||||
|
/** |
||||||
|
* Get id. |
||||||
|
* |
||||||
|
* @return int |
||||||
|
*/ |
||||||
|
public function getId() |
||||||
|
{ |
||||||
|
return $this->id; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set id. |
||||||
|
* |
||||||
|
* @param int $id |
||||||
|
* |
||||||
|
* @return Platform |
||||||
|
*/ |
||||||
|
public function setId($id) |
||||||
|
{ |
||||||
|
$this->id = $id; |
||||||
|
|
||||||
|
return $this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* Get kid. |
||||||
|
* |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
public function getKid() |
||||||
|
{ |
||||||
|
return $this->kid; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set kid. |
||||||
|
* |
||||||
|
* @param string $kid |
||||||
|
*/ |
||||||
|
public function setKid($kid) |
||||||
|
{ |
||||||
|
$this->kid = $kid; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Get privateKey. |
||||||
|
* |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
public function getPrivateKey() |
||||||
|
{ |
||||||
|
return $this->privateKey; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set privateKey. |
||||||
|
* |
||||||
|
* @param string $privateKey |
||||||
|
* |
||||||
|
* @return Platform |
||||||
|
*/ |
||||||
|
public function setPrivateKey($privateKey) |
||||||
|
{ |
||||||
|
$this->privateKey = $privateKey; |
||||||
|
|
||||||
|
return $this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
public function getPublicKey() |
||||||
|
{ |
||||||
|
return $this->publicKey; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param string $publicKey |
||||||
|
*/ |
||||||
|
public function setPublicKey(string $publicKey) |
||||||
|
{ |
||||||
|
$this->publicKey = $publicKey; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
@ -1,24 +0,0 @@ |
|||||||
{ |
|
||||||
"https://testing3.beeznest.com": { |
|
||||||
"client_id": "44WGA9lh8fmsRITfBac4", |
|
||||||
"auth_login_url": "https://testing3.beeznest.com/plugin/ims_lti/auth.php", |
|
||||||
"auth_token_url": "https://testing3.beeznest.com/plugin/ims_lti/token.php", |
|
||||||
"key_set_url": "https://testing3.beeznest.com/plugin/ims_lti/jwks.php", |
|
||||||
"private_key_file": "/keys/private.key", |
|
||||||
"kid": "51dadff927d803c965f6", |
|
||||||
"deployment": [ |
|
||||||
"8" |
|
||||||
] |
|
||||||
}, |
|
||||||
"https://11.chamilo.org": { |
|
||||||
"client_id": "RcHE5hk5ruI9sOr9t0UN", |
|
||||||
"auth_login_url": "https://11.chamilo.org/plugin/ims_lti/auth.php", |
|
||||||
"auth_token_url": "https://11.chamilo.org/plugin/ims_lti/token.php", |
|
||||||
"key_set_url": "https://11.chamilo.org/plugin/ims_lti/jwks.php", |
|
||||||
"private_key_file": "/keys/private.key", |
|
||||||
"kid": "e52a3d2435f9e5071e3e", |
|
||||||
"deployment": [ |
|
||||||
"183" |
|
||||||
] |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,65 +0,0 @@ |
|||||||
<?php |
|
||||||
/* For license terms, see /license.txt */ |
|
||||||
|
|
||||||
require_once __DIR__ . '/../vendor/autoload.php'; |
|
||||||
use \IMSGlobal\LTI; |
|
||||||
|
|
||||||
class Demo_Database implements LTI\Database |
|
||||||
{ |
|
||||||
public function find_registration_by_issuer($iss) { |
|
||||||
|
|
||||||
$lti_customers = $this->get_lti_connection(); |
|
||||||
if (empty($lti_customers[$iss])) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
return LTI\LTI_Registration::new() |
|
||||||
->set_auth_login_url($lti_customers[$iss]['auth_login_url']) |
|
||||||
->set_auth_token_url($lti_customers[$iss]['auth_token_url']) |
|
||||||
->set_auth_server($lti_customers[$iss]['auth_token_url']) |
|
||||||
->set_client_id($lti_customers[$iss]['client_id']) |
|
||||||
->set_key_set_url($lti_customers[$iss]['key_set_url']) |
|
||||||
->set_kid($lti_customers[$iss]['kid']) |
|
||||||
->set_issuer($iss) |
|
||||||
->set_tool_private_key(file_get_contents($lti_customers[$iss]['private_key_file'])); |
|
||||||
} |
|
||||||
|
|
||||||
public function find_deployment($iss, $deployment_id) { |
|
||||||
if (!in_array($deployment_id, $_SESSION['iss'][$iss]['deployment'])) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
return LTI\LTI_Deployment::new() |
|
||||||
->set_deployment_id($deployment_id); |
|
||||||
} |
|
||||||
|
|
||||||
private function get_lti_connection() { |
|
||||||
|
|
||||||
$keyPath = api_get_path(SYS_PLUGIN_PATH).'/lti_provider/keys/private.key'; |
|
||||||
|
|
||||||
$em = Database::getManager(); |
|
||||||
$platforms = $em->getRepository('ChamiloPluginBundle:LtiProvider\Platform')->findAll(); |
|
||||||
|
|
||||||
$lti_customers = []; |
|
||||||
foreach ($platforms as $platform) { |
|
||||||
$issuer = $platform->getIssuer(); |
|
||||||
$lti_customers[$issuer] = [ |
|
||||||
'client_id' => $platform->getClientId(), |
|
||||||
'auth_login_url' => $platform->getAuthLoginUrl(), |
|
||||||
'auth_token_url' => $platform->getAuthTokenUrl(), |
|
||||||
'key_set_url' => $platform->getKeySetUrl(), |
|
||||||
'private_key_file' => $keyPath, |
|
||||||
'kid' => $platform->getKid(), |
|
||||||
'deployment' => [$platform->getDeploymentId()] |
|
||||||
]; |
|
||||||
} |
|
||||||
$_SESSION['iss'] = []; |
|
||||||
if (!empty($lti_customers)) { |
|
||||||
$_SESSION['iss'] = array_merge($_SESSION['iss'], $lti_customers); |
|
||||||
} |
|
||||||
return $lti_customers; |
|
||||||
} |
|
||||||
|
|
||||||
private function private_key($iss) { |
|
||||||
return file_get_contents($_SESSION['iss'][$iss]['private_key_file']); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -0,0 +1,50 @@ |
|||||||
|
<?php |
||||||
|
/* For license terms, see /license.txt */ |
||||||
|
|
||||||
|
use Packback\Lti1p3\Interfaces\Cache as Lti1p3Cache; |
||||||
|
|
||||||
|
|
||||||
|
class Lti13Cache implements Lti1p3Cache |
||||||
|
{ |
||||||
|
public const NONCE_PREFIX = 'nonce_'; |
||||||
|
|
||||||
|
private $cache; |
||||||
|
|
||||||
|
public function getLaunchData($key) { |
||||||
|
$this->loadCache(); |
||||||
|
return $this->cache[$key]; |
||||||
|
} |
||||||
|
|
||||||
|
public function cacheLaunchData($key, $jwt_body) { |
||||||
|
$this->cache[$key] = $jwt_body; |
||||||
|
$this->saveCache(); |
||||||
|
return $this; |
||||||
|
} |
||||||
|
|
||||||
|
public function cacheNonce($nonce) { |
||||||
|
$this->cache['nonce'][$nonce] = true; |
||||||
|
$this->saveCache(); |
||||||
|
return $this; |
||||||
|
} |
||||||
|
|
||||||
|
public function checkNonce($nonce) { |
||||||
|
$this->loadCache(); |
||||||
|
if (!isset($this->cache['nonce'][$nonce])) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
private function loadCache() { |
||||||
|
$cache = file_get_contents(sys_get_temp_dir() . '/lti_cache.txt'); |
||||||
|
if (empty($cache)) { |
||||||
|
file_put_contents(sys_get_temp_dir() . '/lti_cache.txt', '{}'); |
||||||
|
$this->cache = []; |
||||||
|
} |
||||||
|
$this->cache = json_decode($cache, true); |
||||||
|
} |
||||||
|
|
||||||
|
private function saveCache() { |
||||||
|
file_put_contents(sys_get_temp_dir() . '/lti_cache.txt', json_encode($this->cache)); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
<?php |
||||||
|
/* For license terms, see /license.txt */ |
||||||
|
|
||||||
|
use Packback\Lti1p3\Interfaces\Cookie as Lti1p3Cookie; |
||||||
|
|
||||||
|
class Lti13Cookie implements Lti1p3Cookie |
||||||
|
{ |
||||||
|
public function getCookie($name) |
||||||
|
{ |
||||||
|
if (isset($_COOKIE[$name])) { |
||||||
|
return $_COOKIE[$name]; |
||||||
|
} |
||||||
|
// Look for backup cookie if same site is not supported by the user's browser. |
||||||
|
if (isset($_COOKIE["LEGACY_" . $name])) { |
||||||
|
return $_COOKIE["LEGACY_" . $name]; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public function setCookie($name, $value, $exp = 3600, $options = []): self |
||||||
|
{ |
||||||
|
$cookie_options = [ |
||||||
|
'expires' => time() + $exp |
||||||
|
]; |
||||||
|
|
||||||
|
// SameSite none and secure will be required for tools to work inside iframes |
||||||
|
/*$same_site_options = [ |
||||||
|
'samesite' => 'None', |
||||||
|
'secure' => false, |
||||||
|
'httponly' => true |
||||||
|
];*/ |
||||||
|
|
||||||
|
setcookie($name, $value, array_merge($cookie_options, $same_site_options, $options)); |
||||||
|
|
||||||
|
// Set a second fallback cookie in the event that "SameSite" is not supported |
||||||
|
setcookie("LEGACY_" . $name, $value, array_merge($cookie_options, $options)); |
||||||
|
return $this; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,75 @@ |
|||||||
|
<?php |
||||||
|
/* For license terms, see /license.txt */ |
||||||
|
|
||||||
|
use Chamilo\PluginBundle\Entity\LtiProvider\Platform; |
||||||
|
use Chamilo\PluginBundle\Entity\LtiProvider\PlatformKey; |
||||||
|
use ChamiloSession as Session; |
||||||
|
use Packback\Lti1p3; |
||||||
|
use Packback\Lti1p3\Interfaces; |
||||||
|
use Packback\Lti1p3\LtiRegistration; |
||||||
|
use Packback\Lti1p3\LtiDeployment; |
||||||
|
use Packback\Lti1p3\OidcException; |
||||||
|
|
||||||
|
class Lti13Database implements Interfaces\Database |
||||||
|
{ |
||||||
|
|
||||||
|
public function findRegistrationByIssuer($iss, $clientId = null) { |
||||||
|
$ltiCustomers = $this->getLtiConnection(); |
||||||
|
if (empty($ltiCustomers[$iss])) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
if (!isset($clientId)) { |
||||||
|
$clientId = $ltiCustomers[$iss]['client_id']; |
||||||
|
} |
||||||
|
|
||||||
|
return LtiRegistration::new() |
||||||
|
->setAuthLoginUrl($ltiCustomers[$iss]['auth_login_url']) |
||||||
|
->setAuthTokenUrl($ltiCustomers[$iss]['auth_token_url']) |
||||||
|
->setClientId($clientId) |
||||||
|
->setKeySetUrl($ltiCustomers[$iss]['key_set_url']) |
||||||
|
->setKid($ltiCustomers[$iss]['kid']) |
||||||
|
->setIssuer($iss) |
||||||
|
->setToolPrivateKey($this->getPrivateKey()); |
||||||
|
} |
||||||
|
|
||||||
|
public function findDeployment($iss, $deploymentId, $clientId = null) { |
||||||
|
if (!in_array($deploymentId, $_SESSION['iss'][$iss]['deployment'])) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
return LtiDeployment::new() |
||||||
|
->setDeploymentId($deploymentId); |
||||||
|
} |
||||||
|
|
||||||
|
private function getLtiConnection() { |
||||||
|
|
||||||
|
$em = Database::getManager(); |
||||||
|
$platforms = $em->getRepository('ChamiloPluginBundle:LtiProvider\Platform')->findAll(); |
||||||
|
|
||||||
|
$ltiCustomers = []; |
||||||
|
foreach ($platforms as $platform) { |
||||||
|
$issuer = $platform->getIssuer(); |
||||||
|
$ltiCustomers[$issuer] = [ |
||||||
|
'client_id' => $platform->getClientId(), |
||||||
|
'auth_login_url' => $platform->getAuthLoginUrl(), |
||||||
|
'auth_token_url' => $platform->getAuthTokenUrl(), |
||||||
|
'key_set_url' => $platform->getKeySetUrl(), |
||||||
|
'kid' => $platform->getKid(), |
||||||
|
'deployment' => [$platform->getDeploymentId()] |
||||||
|
]; |
||||||
|
} |
||||||
|
Session::write('iss', $ltiCustomers); |
||||||
|
return $ltiCustomers; |
||||||
|
} |
||||||
|
|
||||||
|
private function getPrivateKey() { |
||||||
|
$privateKey = ''; |
||||||
|
$platformKey = Database::getManager() |
||||||
|
->getRepository('ChamiloPluginBundle:LtiProvider\PlatformKey') |
||||||
|
->findOneBy([]); |
||||||
|
if ($platformKey) { |
||||||
|
$privateKey = $platformKey->getPrivateKey(); |
||||||
|
} |
||||||
|
return $privateKey; |
||||||
|
} |
||||||
|
} |
||||||
@ -1,27 +0,0 @@ |
|||||||
-----BEGIN RSA PRIVATE KEY----- |
|
||||||
MIIEowIBAAKCAQEA8osiSa75nmqmakwNNocLA2N2huWM9At/tjSZOFX1r4+PDclS |
|
||||||
zxhMw+ZcgHH+E/05Ec6Vcfd75i8Z+Bxu4ctbYk2FNIvRMN5UgWqxZ5Pf70n8UFxj |
|
||||||
GqdwhUA7/n5KOFoUd9F6wLKa6Oh3OzE6v9+O3y6qL40XhZxNrJjCqxSEkLkOK3xJ |
|
||||||
0J2npuZ59kipDEDZkRTWz3al09wQ0nvAgCc96DGH+jCgy0msA0OZQ9SmDE9CCMbD |
|
||||||
T86ogLugPFCvo5g5zqBBX9Ak3czsuLS6Ni9Wco8ZSxoaCIsPXK0RJpt6Jvbjclqb |
|
||||||
4imsobifxy5LsAV0l/weNWmU2DpzJsLgeK6VVwIDAQABAoIBAQC2R1RUdfjJUrOQ |
|
||||||
rWk8so7XVBfO15NwEXhAkhUYnpmPAF/tZ4EhfMysaWLZcVIW6bbLKCtuRCVMX9ev |
|
||||||
fIbkkLU0ErhqPi3QATcXL/z1r8+bAUprhpNAg9fvfM/ZukXDRged6MPNMC11nseE |
|
||||||
p8HUU4oHNwXVyL6FvmstrHyYoEnkjIiMk34O2MFjAavoIJhM0gkoXVnxRP5MNi1n |
|
||||||
GPVhK+TfZyRri20x1Rh3CsIq36PUyxCICWkD7jftLGqVdQBfuii600LP5v7nuHz9 |
|
||||||
LDsCeY7xRJu0eLdDk7/9ukb8fuq6/+3VYMYChYWvpw4DaH8qDHxZfWzMyaI489ma |
|
||||||
l27lhgdxAoGBAPkxH6WuZM/GOowjySuruRjAVyJ4stfe9l/x8MrqnFA2Q8stqK69 |
|
||||||
60Y9LDrSaAx7QutvzZ64br2WMlvnGdJw868z4/JmvoAqW3IHUXzqRAHgOk/8Y3ze |
|
||||||
Sjd7t3R0O3v6qAbQjyRYYgfAMZo7PzXW8FKNGsakAedEKW0b94HYndKpAoGBAPkr |
|
||||||
grtARp2nnd1WGuxgQMjX++HjT0p9x7fTMCtfvYhZguU9AlCx53VHFeGc6fqsDkUm |
|
||||||
BFv0dqMnw0TPzEQqLElBIh87TGS4JSXmcbQcejIx+ry2kMFuyMZIPuvZCnLfB/d7 |
|
||||||
Qu2DU6mdeIBME/8AX5kBqn1ekddioESdSkHkkif/AoGAaPCeAjjZ7YHuP/wGCOUN |
|
||||||
UvYU+8hWkIAtwyPxIpMAdusTS6oTwlrqjK7QRIk9FhyGhv2TWwcSY7avyHIfNrco |
|
||||||
eBzjHr7T9MdhsTiRwYgqUZvrEqoX/4rhOFJaZKlaL5DUV+JWlZi+18LBYNEYgoTc |
|
||||||
ufcAUqzYvFrBE1jWt5DQjdkCgYATs6sMn1J2GNDUtYA/fITi3KEgBVc5rqRiFqLS |
|
||||||
aymTZHCDK8XJF6gTj+FdC4k8tuoR8aWal8Phtr0r7bpbEXKbADlwesHZnO3jB0uq |
|
||||||
UC4hVe5biZv8j4P0mbXP9ENtPdFlciuimCW/XaIvktRp71+fu4/9hcLGYxgFFOLQ |
|
||||||
PwCHhQKBgGMCxIcueUkLnI9r0KkjtXap9mIgdgERwQPN0Cm9Tx35ZEzRp95kf4C6 |
|
||||||
MPsVOwZk5gNvvQngx4iaw9fNYG+PF2yNuDZ+EFwI0vpmGCKRQEke9/VCOFucMsjg |
|
||||||
jMhbU+jrqRIJKisP7MCE1NRhymCPpQf/stEPl0nS5rj+mZJHQEGq |
|
||||||
-----END RSA PRIVATE KEY----- |
|
||||||
@ -1,27 +0,0 @@ |
|||||||
-----BEGIN RSA PRIVATE KEY----- |
|
||||||
MIIEpAIBAAKCAQEAyU64VjSdgPqaQp/iaS8EQsCYMBBKFjevaZGraPWGho3H74OY |
|
||||||
nuTbfeo3T6ufSNpK7aImM6rgsNqh6/FVYKUyNKcD/2AYkfu8gip3zAHJBONhu0NN |
|
||||||
EkyeKx9ugvvrrgiifTDM5JYOyOSYVcVHZhsOASb/+eHvq3VSa/+rbgOnqeq7t2rS |
|
||||||
c+Zt/wTWAtY8OIms6uOr8drbHdvDz4+isxlNTBW06ILDLAUS/gH2PDskPJFwAMbn |
|
||||||
moXGoU3j5IKiWGASNWCbUAfeiTs7XIFR/bxEvs+oGsn6vUnZV9dJR20aTG3hsR0E |
|
||||||
YEVfjzBCBpoK3Jb3RLouLnwkZAteJFmyWqAXAwIDAQABAoIBAEVqnsgjNpjOUbld |
|
||||||
ts48h0SZcyFHzLRimVtW/vufhrcJVwNxpoRMOJ/vzwjrDm8pzyKognHYn8h8a8+X |
|
||||||
lbBQ5sIfQZKjSXW1j+h2yn6Pswi7e+z+JSqFPxlxqkMCqd+GXLm8xTqhwBFoOluB |
|
||||||
PsCn3alqEGTTkzjVqQlSzYOPQRanHWSIqeZ4A5Xs6NbjoGdlV0mJ3GeyvyyoPdl1 |
|
||||||
KQoyvVws5xrbHeTgDjLM4Kgp5PShTwlo1Cz2Du34cbUrbcXipS2/77aSM/wBAWuh |
|
||||||
Sq7gsd0iPvd+CeFHcK2+zUwHrksVp+86NgnL/GbcS8Q5tFMDo1GXOg39pJ/PmYVI |
|
||||||
Wp7EoHkCgYEA5r5EA9qCmNkTQdE4kNNl+/zvGdPuzonw7v6356zoET6zntcNcJLC |
|
||||||
EJPPPnipHqLYx2k0URGde1Jywn5xMzJ4hmkj1sPZNfrA5cBjA0T711JnLjOGM6QG |
|
||||||
EdiQN6GnyWGzHPQUGQlaHKe1u4yNP+T19zWqJCaYa1CxjreBRjPQjF0CgYEA31eg |
|
||||||
PNGIPW8SOokVvgd+iI7g2XcYBo7fJX8rDZ+ZA8mSNyYEF2kKECVbfkNMRkEfX2q0 |
|
||||||
RUsQyA0JVFVegpVPWsQaRNp1kKQUkh3Qr1jYV/hlwZ+dke7fO6bXNIFoiWDEaIqr |
|
||||||
UEV2XbsCMWAaieoGRKiBMqxIsXVEVw5NytQ/+t8CgYBx7goZOP/4xl4Kxmo+oBKf |
|
||||||
/EB2qT0lf9iVuPFHFAm10hbQW/DH376wfrr6ZotilBejRl/Nk3wFky0UuWfdVpNK |
|
||||||
Eonele8fBwPNrVN2Hs6Wf5pwpoIh52AT2bFDtq7o8TOGHUH7JrH2qhxCUWDA5qVH |
|
||||||
/ZhXpzLk8f/prtPGvPjBBQKBgQDdE3fhu+cIKLH6j0eeWvy9X/DiUijOFQ59p2uO |
|
||||||
iLSGMzkwrcjPA4KaiOAQE72krUHIyW64SJ3L6FubxwVObU2nowX9seE9060pFapE |
|
||||||
Z8V/Drpq9vyaP8Fo4rWTm6VGlyrT8K+zPY71KO/6wA6FBco+nC2HY1JxloqXQelv |
|
||||||
JLpQMQKBgQCucWu6d68jtPARZgXDsCADZIr0rz6kGPbOY3U/td437BaEZuFEERm0 |
|
||||||
0rtzbh+JOd0fFPjeOeF2zvXoygKts9eSY4SMIo/0tH+9YniWwlw85Xcez8ryPdGj |
|
||||||
Y9cJsEWTvKKlLo2V0vaYQqNJ3qXW6SZkCkg+rwlfMmhNLrIbx7X2DA== |
|
||||||
-----END RSA PRIVATE KEY----- |
|
||||||
@ -1,9 +0,0 @@ |
|||||||
-----BEGIN PUBLIC KEY----- |
|
||||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyU64VjSdgPqaQp/iaS8E |
|
||||||
QsCYMBBKFjevaZGraPWGho3H74OYnuTbfeo3T6ufSNpK7aImM6rgsNqh6/FVYKUy |
|
||||||
NKcD/2AYkfu8gip3zAHJBONhu0NNEkyeKx9ugvvrrgiifTDM5JYOyOSYVcVHZhsO |
|
||||||
ASb/+eHvq3VSa/+rbgOnqeq7t2rSc+Zt/wTWAtY8OIms6uOr8drbHdvDz4+isxlN |
|
||||||
TBW06ILDLAUS/gH2PDskPJFwAMbnmoXGoU3j5IKiWGASNWCbUAfeiTs7XIFR/bxE |
|
||||||
vs+oGsn6vUnZV9dJR20aTG3hsR0EYEVfjzBCBpoK3Jb3RLouLnwkZAteJFmyWqAX |
|
||||||
AwIDAQAB |
|
||||||
-----END PUBLIC KEY----- |
|
||||||
@ -1,3 +1,30 @@ |
|||||||
<?php |
<?php |
||||||
|
/* For license terms, see /license.txt */ |
||||||
|
|
||||||
$strings['HelloPlugin'] = "Salut!"; |
$strings['plugin_title'] = 'LTI 1.3 Advantage Provider'; |
||||||
|
$strings['plugin_comment'] = 'Une application simple développée pour montrer comment créer un outil IMS LTI'; |
||||||
|
$strings['description'] = 'L\'application permet à un étudiant à l\'intérieur d\'un cours de la plate-forme avec des outils externes qui est noté (Services d\'affectation et de notes) et de générer des rapports de leurs membres (Services NRP). |
||||||
|
Voici les détails de votre connexion LTI pour essayer cette application :'; |
||||||
|
$strings['LtiProviderDescription'] = 'La première chose dont vous aurez besoin est de configurer votre enregistrement et votre déploiement. Pour configurer votre inscription |
||||||
|
remplissez le formulaire les valeurs requises pour le déploiement dans votre plateforme'; |
||||||
|
$strings['ConnectionDetails'] = 'Détails de connexion LTI'; |
||||||
|
$strings['AddPlatform'] = 'Ajouter une plateforme client'; |
||||||
|
$strings['EditPlatform'] = 'Modifier la plateforme client'; |
||||||
|
$strings['PlatformName'] = 'LMS (émetteur)'; |
||||||
|
$strings['PlatformEdited'] = 'Détails de la plateforme modifiés'; |
||||||
|
$strings['PlatformDeleted'] = 'Plateforme supprimée'; |
||||||
|
$strings['client_id'] = 'Client ID'; |
||||||
|
$strings['launch_url'] = 'Lancer l\'URL'; |
||||||
|
$strings['login_url'] = 'URL de connexion'; |
||||||
|
$strings['redirect_url'] = 'URL de redirection'; |
||||||
|
$strings['auth_login_url'] = 'URL d\'authentification OIDC'; |
||||||
|
$strings['auth_token_url'] = 'URL du jeton d\'accès OAuth2'; |
||||||
|
$strings['key_set_url'] = 'URL du jeu de clés'; |
||||||
|
$strings['deployment_id'] = 'ID de déploiement'; |
||||||
|
$strings['kid'] = 'kid'; |
||||||
|
$strings['public_key'] = 'Clé publique'; |
||||||
|
$strings['name'] = 'Nom du fournisseur'; |
||||||
|
$strings['enabled'] = 'Enabled'; |
||||||
|
$strings['GenerateKeyPairInfo'] = 'Une nouvelle paire de clés privée et publique sera créée lors de l\'activation.'; |
||||||
|
$strings['URLs'] = 'Endpoints Urls'; |
||||||
|
$strings['PlatformConnectionAdded'] = 'Une connexion de plate-forme est ajoutée.'; |
||||||
|
|||||||
@ -1,3 +1,30 @@ |
|||||||
<?php |
<?php |
||||||
|
/* For license terms, see /license.txt */ |
||||||
|
|
||||||
$strings['HelloPlugin'] = "Hola chaval!"; |
$strings['plugin_title'] = 'Proveedor de ventajas LTI 1.3'; |
||||||
|
$strings['plugin_comment'] = 'Aplicación simple desarrollada como una forma de demostrar cómo construir un proveedor de herramientas IMS LTI'; |
||||||
|
$strings['description'] = 'La aplicación permite a un alumno entrar en un curso de la plataforma con herramientas externas que se puntúan (Assigment and Grade Services) y generar informes de sus miembros (NRP Services). |
||||||
|
Aquí están los detalles de su conexión LTI para probar esta aplicación: '; |
||||||
|
$strings['LtiProviderDescription'] = 'Lo primero que necesitará es configurar su registro y despliegue. Para configurar su registro |
||||||
|
complete el formulario con los valores requeridos para el despliegue en su plataforma '; |
||||||
|
$strings['ConnectionDetails'] = 'Detalles de la conexión LTI'; |
||||||
|
$strings['AddPlatform'] = 'Agregar una plataforma de cliente'; |
||||||
|
$strings['EditPlatform'] = 'Edite la plataforma del cliente'; |
||||||
|
$strings['PlatformName'] = 'LMS (emisor)'; |
||||||
|
$strings['PlatformEdited'] = 'Detalles de la plataforma editados'; |
||||||
|
$strings['PlatformDeleted'] = 'Plataforma eliminada'; |
||||||
|
$strings['client_id'] = 'ID de cliente'; |
||||||
|
$strings['launch_url'] = 'URL de lanzamiento'; |
||||||
|
$strings['login_url'] = 'URL de inicio de sesión'; |
||||||
|
$strings['redirect_url'] = 'URL de redireccionamiento'; |
||||||
|
$strings['auth_login_url'] = 'URL de autenticación OIDC'; |
||||||
|
$strings['auth_token_url'] = 'URL del token de acceso de OAuth2'; |
||||||
|
$strings['key_set_url'] = 'URL del conjunto de claves'; |
||||||
|
$strings['deployment_id'] = 'ID de implementación'; |
||||||
|
$strings['kid'] = 'Kid'; |
||||||
|
$strings['public_key'] = 'Clave pública'; |
||||||
|
$strings['name'] = 'Nombre del proveedor'; |
||||||
|
$strings['enabled'] = 'Habilitado'; |
||||||
|
$strings['GenerateKeyPairInfo'] = 'Se creará un nuevo par de claves pública y privada cuando se habilite.'; |
||||||
|
$strings['URLs'] = 'URL de puntos finales'; |
||||||
|
$strings['PlatformConnectionAdded'] = 'Se agrega una conexión de plataforma.'; |
||||||
|
|||||||
@ -1 +1 @@ |
|||||||
{"CURSO02":{"2":{"score":"2","time":"3","name":"Christian"},"3":{"score":"6","time":"10","name":"Miguel"},"4":{"score":"15","time":"20","name":"Rosa Emerita"}},"CURSOBASE":{"1":{"name":"John","score":"4","time":"6"}},"CURSODECHRISTIAN":{"1":{"name":"Doe admin","score":"5","time":"8"}},"CURSO04":{"2":{"name":"Juan","score":"9","time":"16"}},"CURSO05":{"2":{"name":"Juan","score":"15","time":"22"}}} |
{"CURSO02":{"2":{"score":"2","time":"3","name":"Christian"},"3":{"score":"6","time":"10","name":"Miguel"},"4":{"score":"15","time":"20","name":"Rosa Emerita"}},"CURSOBASE":{"1":{"name":"John","score":"4","time":"6"}},"CURSODECHRISTIAN":{"1":{"name":"Doe admin","score":"5","time":"8"}},"CURSO04":{"2":{"name":"Juan","score":"9","time":"16"}},"CURSO05":{"2":{"name":"Juan","score":"15","time":"22"}},"CURSO06":{"2":{"name":"Juan","score":"8","time":"10"}}} |
||||||
Loading…
Reference in new issue