';
foreach (['ssoLabel'=>'Nom du SSO (Se connecter avec …)', 'issuer'=>'URL HTTPS de Pocket ID / issuer OIDC', 'clientId'=>'Client ID', 'clientSecret'=>'Client secret'] as $key=>$label) {
$html .= '';
}
return $html.'
Secret vide : conserver le secret existant. URI de retour OIDC : '.htmlspecialchars(DOMAIN_ADMIN.'login?bs=oidc').'. Aucun compte n’est associé automatiquement par e-mail : chaque utilisateur lie son identité depuis son espace personnel.
';
}
public function post() {
if (empty($_POST['clientSecret'])) { unset($_POST['clientSecret']); }
$issuer = trim($_POST['issuer'] ?? '');
if ($issuer !== '' && (parse_url($issuer, PHP_URL_SCHEME) !== 'https' || parse_url($issuer, PHP_URL_USER) || parse_url($issuer, PHP_URL_QUERY) || parse_url($issuer, PHP_URL_FRAGMENT))) { return false; }
return parent::post();
}
/** Runs while plugins are built, BEFORE Bludit's AJAX dispatch and native login. */
public function prepare() {
global $url;
if ($url->whereAmI() !== 'admin') { return; }
try {
require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/src/Store.php';
require_once __DIR__.'/src/Totp.php';
require_once __DIR__.'/src/App.php';
(new \BluditSecure\App($this))->run();
} catch (\Throwable $e) {
error_log('bludit-secure: '.get_class($e).' '.$e->getMessage());
http_response_code(503);
header('Cache-Control: no-store');
exit('Bludit Secure indisponible. Consulter les journaux du serveur.');
}
}
public function adminSidebar() {
return 'Sécurité de mon compte';
}
}